如题,谁能用递归帮忙写个呀 面试题,必须要做出来,求求大家帮帮忙了。。在线等答案
解决方案 »
- 初学求助:C# Invalid token ';'(VS2008下)
- 把combobox的dropdownstyle改了之后出现的一点问题
- 在Vista x64系统中用C#调用C++编写的win32 DLL出现"找不到指定的模块"的错误
- C# 类库 控件 大大们帮帮忙啊~
- 如何将datareader读出来的数据在listview 中显示?
- 请问一个问题c#能不能和MapX结合开发Gis应用(b/s或c/s结构)
- 这种功能怎么实现呢?急等!!!希望各位大哥给予指导!!!
- C# winform 怎么做一个形状不规则的控件
- .net2005.c#语法实现
- 关于往tabcontrol中动态添加form的实现
- 有差别吗?
- 地址栏图标问题?
string aa = "";
int i=-1;
private string funtion(int num1, int num2)
{
int num3 = num1%num2;
i++;
if(i>=0 && i<300)
{
aa += funtion(num3, num2);
}
return num3.tostring();
} 就这样吧,我感觉这东西用递归,不知道什么想法
{
MessageBox.Show(funGetValue(22, 300).ToString());
}
private int funGetValue(int intDividend, int intDotNo)
{
int intMod, intValue;
intMod = intDividend;
do
{
intValue = intMod / 7;
intMod = intMod % 7;
} while (intMod > 7); for (int i = 1; i <= intDotNo; i++)
{
//intValue = funGetValue(intMod * 10, 1);
intValue = (intMod * 10)/7;
intMod = (intMod*10) % 7;
}
return intValue;
}
{
public partial class Form1 : Form
{
int iDecimalPointCount;
int iDecimalPointValue;
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
int i1 = 22 % 7;
iDecimalPointValue = 0;
iDecimalPointCount = 1;
while(true)
{
i1 = CalcResult(i1);
if(iDecimalPointCount ==Convert.ToInt32(numericUpDown1.Value))
break ;
iDecimalPointCount++;
}
textBox1.Text = iDecimalPointValue.ToString();
} private int CalcResult(int i1)
{
int iResult;
if (i1 < 7)
iResult = i1 * 10;
else
iResult = i1;
iDecimalPointValue = iResult / 7;
return iResult % 7;
}
}
}
/// <summary>
/// 整数相除,结果保存在范型中
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <param name="result"></param>
public static void Div(int a, int b, ref List<char> result)
{
if (result.Count >= 300)
{
return;
}
result.Add((char)(48 + a / b));
Div((a % b) * 10, b, ref result);
}
调用:
List<char> list = new List<char>();
int num1 = 2;
int num2 = 7;
//先计算整数部分
list.AddRange((num1 / num2).ToString());//如果两个数不能整除,则计算小数部分
if (num1 % num2 != 0)
{
list.Add('.');
Div((num1 % num2) * 10, num2, ref list);
}
//将结果转换成字符串
string ret = new string(list.ToArray());
{
//统计次数
static int count = 0;
static void Main(string[] args)
{
//
Console.WriteLine(GetNum(22));
}
static int GetNum(int num)
{ if (num < 7)
{
num *= 10;
++count;
}
//第300位是多少
if (count < 300)
return GetNum(num % 7);
else
return num / 7;
}
}
static void Main()
{
Caculate(22, 7,0);
Console.WriteLine(result);
}
public static void Caculate(int dividend, int divisor,int count)
{
dividend = dividend % divisor*10;
result += (dividend / divisor).ToString();
if (count < 301)
Caculate(dividend, divisor, result.Length);
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using System.Xml;
using System.Collections;namespace CSharpTest
{ class Program
{
static void Main(string[] args)
{
string re = string.Empty;
div(22, 7, ref re);
Console.WriteLine(re);
} /// <summary>
/// num1/num2
/// </summary>
/// <param name="num1"></param>
/// <param name="num2"></param>
/// <param name="result"></param>
static void div(int num1, int num2, ref string result)
{
int num = num1 / num2;
int left = num1 % num2;
if (left < num2)
{
if (result.Contains('.'))
{
result += num.ToString();
}
else
{ result += num.ToString();
result += '.';
}
}
if (result.Length > 303)
{
return;
}
div(left * 10, num2, ref result);
} }
}
{
int a = 22;
int b = 7;
int result = 0;
GegMod(a%b*10, b,result); } int i = 1;
public void GegMod(int a, int b,int result)
{
if (a % b != 0&&i!=300)
{
i++;
GegMod(a % b*10, b,result);
}
else if (i == 300)
{
i = 1;
result = a / b;
}
}
private void button10_Click(object sender, EventArgs e)
{
int a = 22;
int b = 7;
GegMod(a%b*10, b); } int i = 1;
int result=0;
public void GegMod(int a, int b)
{
if (a % b != 0&&i!=300)
{
i++;
GegMod(a % b*10, b);
}
else if (i == 300)
{
i = 1;
result = a / b;
}
}
public static int i = -1; public static void funtion(int num1, int num2)
{
int num3 = num1 < num2 ? (num1 * 10) % num2 : num1 % num2;
i++;
if (i >= 0 && i < 300)
{
aa += num1 < num2 ? (num1 * 10) / num2 : num1 / num2;
funtion(num3, num2);
}
} static void Main(string[] args)
{
string bb = "";
int i = 22;
int j = 7;
funtion(i,j);
if (i >= j)
bb = aa.Substring(0, 1) + "." + aa.Substring(1, aa.Length - 1);
else
bb = "0." + aa;
Console.Write(aa);
Console.Write(bb);
Console.ReadLine();
}
不是很准确。
* 22/7后面的300位小数
*/#include <iostream>using namespace std;int temp,times=0;void Divide(int m,int n)
{
if(++times>300) return;
temp = m%n;
cout<<(m-temp)/n<<" ";
if(times%10==0)
cout<<endl;
temp = temp*10;
Divide(temp,n);
}void main(void)
{
Divide(10,7);
}
{ public static int sum = 0;
public static int i = 0;
public static int x = 22;
public static int y = 7; public static void funtion(int num1, int num2)
{
int num3 =(num1 * 10) % num2;
i++;
if (i == 300)
{
sum = (num1 * 10) / num2 ;
return;
}
funtion(num3, num2);
} static void Main(string[] args)
{
funtion(x % y , y);
Console.Write(sum.ToString());
Console.ReadLine();
}
}这个是只求小数点后第300位的数字。参考参考
private string GETR(int a,int b,int len,bool u)
{
if ( len < 1 ) return "";
string str = ( a/b ).ToString();
if ( u ) str += ".";
int t = a%b;
while(t<b) t*=10;
return str+GETR(t,b,len-1,false);
}
调用string result = GETR( 22, 7, 300, true);
{
string str = "";
if ( len < 1 ) return "";
if ( len == 1 )
str = Math.Round((decimal)a/b).ToString();
else
str = ( a/b ).ToString();
if ( u ) str += ".";
int t = a%b;
while(t<b) t*=10;
return str+GETR(t,b,len-1,false);
}
{
static int i = 0;
if (i++ == count)
return;
arrRe[i - 1] = dividend / 7;
MyRecursion((dividend % 7) * 10, divisor, count, arrRe);
}void main()
{
int arrRe[300];
MyRecursion(22, 7, 300, arrRe);
}
{
static int i = 0;
if (i++ == count)
return;
arrRe[i - 1] = dividend / divisor;
MyRecursion((dividend % divisor) * 10, divisor, count, arrRe);
}
{
static int i = 0;
if (i++ == count)
{
i = 0;
return;
}
arrRe[i - 1] = dividend / divisor;
MyRecursion((dividend % divisor) * 10, divisor, count, arrRe);
}
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("22/7保留300位小数:"+GetBesidesstr(22, 7, 300, 0) + "<br/>");
Response.Write("小数点后的第300位数是:"+GetBesidespos(22, 7, 300)+"<br/>");
}
private string GetBesidesstr(int a, int b, int i, int flag)
{
if (a % b == 0)
{
return (a / b) + "";
}
else
{
if (i == 0)
{
return (a / b) + "";
}
else
{
if (flag == 0)
{
return (a / b) + "." + GetBesidesstr((a % b) * 10, b, --i, 1);
}
return (a / b) + GetBesidesstr((a % b) * 10, b, --i,1);
}
}
}
private string GetBesidespos(int a, int b, int i)
{
if (a % b == 0)
{
return (a / b) + "";
}
else
{
if (i == 0)
{
return (a / b) + "";
}
else
{
return GetBesidespos((a % b) * 10, b, --i);
}
}
}
static void Main()
{
int num1 = 22;
int num2 = 7;
int[] num = new int[300];
GetNum(0, num, num1 % num2, num2);
for (int i = 1; i <= num.Length; i++)
{
Console.Write(num[i - 1]);
if (i % 12 == 0)
Console.Write("\n");
else
Console.Write(" ");
}
Console.ReadLine();
} static void GetNum(int i, int[] num, int num1, int num2)
{
if (i == 300) return;
int temp = (num1 * 10) / num2;
num1 = (num1 * 10) % num2; if (temp != 0)
{
num[i] = temp;
i++;
GetNum(i, num, num1, num2);
}
}