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

Posted myvis

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于递归算法的一些常见问题相关的知识,希望对你有一定的参考价值。

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

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

以上是关于关于递归算法的一些常见问题的主要内容,如果未能解决你的问题,请参考以下文章

有没有关于递归算法方面的书?

初次接触java中的递归算法

递归思维的算法是啥? (关于具体例子)

关于河内塔递归算法时间复杂度的问题

关于 matlab 函数递归

关于递归