解决方案 »

  1.   


    第n个数,是第n-1个数与第n-2个数之和。并且第1、第2个数都是1。就思想上来说,这是简单的“函数映射”概念。如果上过理科,学过各门类的数学模型(例如如果你学过物理学,是否还有点印象、有正规的老师给你讲过“拉格朗日电磁方程”呢?),会反复地在7、8个不同的基础课程中受到这类训练。所以说上学就是干这个的,学校不会给你真金白银,但是会影响人的一生。知道编程里能体现递归函数计算,这就好象是知道“蔬菜里有盐分”一样,只要有别的基础就能记住了。
      

  2.   

    菲波拉契数列,从第三项开始,每项等于前两项之和。
    用递推表示就是
    f(1) = 1
    f(2) = 1
    f(n) = f(n - 1) + f(n - 2) n >= 3
      

  3.   

    递归方便简洁,用循环也可以额DECLARE @i INT=3
    DECLARE @f1 INT=1,@f2 INT =1,@f3 INT
    WHILE @i <=30
    BEGIN
    SELECT @f3 = @f1 + @f2
    PRINT @f3

    SET @f1=@f2
    SET @f2=@f3

    SET @i=@i+1
    END
      

  4.   


     function fib(n) {
                var fib_n = function (curr, next, n) {
                    if (n === 0) {
                        return curr;
                    } else {
                        return fib_n(next, curr + next, n - 1);
                    }
                }
                return fib_n(0, 1, n);
            }官方代码。。
      

  5.   

    递归在java中有个很严重的问题就是占内存  我记得N=31的时候必溢出递归方便简洁,用循环也可以额DECLARE @i INT=3
    DECLARE @f1 INT=1,@f2 INT =1,@f3 INT
    WHILE @i <=30
    BEGIN
    SELECT @f3 = @f1 + @f2
    PRINT @f3

    SET @f1=@f2
    SET @f2=@f3

    SET @i=@i+1
    END
      

  6.   

    int  gg(int XH)
            {
                int num = 0;
                if (XH <= 2)
                {
                    num = 1;
                }
                else
                {
                    num = gg(XH - 1) + gg(XH - 2);
                }
                return num;
            }
      

  7.   


      //1,1,2,3,5,8,13,21,34,55.....
                for (int a=1,b=1,c=0,i=1; i <= 30; i++)
                {
                    c = a + b;
                    a = b;
                    b = c;
                }