1. 程式人生 > >關於遞歸算法的一些常見問題

關於遞歸算法的一些常見問題

console ret 遇見 sun turn int 數字 ons 常見問題

面試題中總能遇見一些常見的遞歸算法的問題,下面羅列一些簡答的遞歸算法問題:

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);
  }
}

關於遞歸算法的一些常見問題