关于递归算法的一些常见问题

面试题中总能遇见一些常见的递归算法的问题,下面罗列一些简答的递归算法问题:

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

猜你喜欢

转载自www.cnblogs.com/myvis/p/9114477.html