递归算法

#include   <stdio.h>
void   main()
{
/*
说明:这个数列有如下特点:第1数为1,第2个数为1。从第3个数开始,该数是其前面两个数的和。即
F1   =   1   (n=1)
F2   =   1   (n=2)
Fn   =   Fn-1   +   Fn-2(n> =3)
*/

int   i,fibo[30]={1,1};     //声明变量和数组并为数组第0、1个赋值
for(i=2;i <30;i++)
{
      fibo[i]=fibo[i-1]+fibo[i-2];       //用前两个数相加的结果赋值
}

for(i=0;i <30;i++)
{
  printf( "%d\n ",fibo[i]);    
}
   
}
经典例题:递归,不停在同一条公式上调用本身,直至赋值给它跳出循环。

3. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。
答:public class MainClass
                  {
                  public static void Main()
                  {
                  Console.WriteLine(Foo(30));
                  }
                  public static int Foo(int i)
                  {
                  if (i <= 0)
                  return 0;
                  else if(i > 0 && i <= 2)
                  return 1;
                  else return Foo(i -1) + Foo(i - 2);
                  }
                  }

posted @ 2011-02-24 00:34  勇气  阅读(208)  评论(0编辑  收藏  举报