關於遞歸算法的一些常見問題
面試題中總能遇見一些常見的遞歸算法的問題,下面羅列一些簡答的遞歸算法問題:
public void recursions()
{
Console.Write("請輸入一個從1疊加的到得數字:");
string k = Console.ReadLine();
int count = sun(Convert.ToInt32(k));
Console.WriteLine("遞歸加到{0}的和值:{1}",k,count);
Console.WriteLine("**********");
Console.WriteLine("**********");
Console.Write("在1-2+3-4+5-6+7-8+9......規則下輸入一個大於1的範圍數:");
string j = Console.ReadLine();
int ov = Sum(Convert.ToInt32(j));
Console.WriteLine("遞歸1到{0}的和是:{1}",j,ov);
Console.WriteLine("**********");
Console.WriteLine("**********");
Console.Write("在1,1,2,3,5,8,13,21,34....的規則下確定第幾個數:");
string l = Console.ReadLine();
int m = Confirm(Convert.ToInt32(l));
Console.WriteLine("1,1,2,3,5,8,13,21,34....的第{0}的數是{1}",l,m);
}
//遞歸加法:1到i
public int sun(int i)
{
if (i > 0)
{
return i + sun(i - 1);
}else{
return 0;
}
}
//加法:1-2+3-4+5-6+7-8+9......的和
private int Sum(int i)
{
if (i>0&&i % 2 == 0)
{
return i * (-1) + Sum(i - 1);
}else if(i > 0 && i % 2 != 0)
{
return i + Sum(i - 1);
}else{
return 0;
}
}
//遞歸計算:1,1,2,3,5,8,13,21,34....的第l個數
public int Confirm(int e)
{
if (e <= 0)
{
return 0;
}else if(e>0 && e <= 2)
{
return 1;
}else{
return Confirm(e - 1) + Confirm(e - 2);
}
}
關於遞歸算法的一些常見問題