(番外)关于递归的再次整理

之前还是too young too simple了,没把递归弄明白。

直到面试官问了我这么个问题:

int digui(int a)

{

  return digui(a-1)+digui(a-2);

}

这样代码的编写方式对吗?

 

如果是大神级的应该一眼就能说出来了,但是,我经过两个月类似设计师的训练后,全!忘!了!

也是当时学的太不扎实的缘故,另外递归作为代码编写来说,还是少用为好,虽然学会了,却刻意给忘了。

这个代码现在来分析的话,存在两个问题:

1、没有能够跳出循环的条件

2、有关这个递归的运算问题

 

首先递归不能是个死循环的,条件是必不可少的

在这方面做一个修正后,代码为

        int digui(int a)

        {

            if (//条件)

            {

                return 1;

            }

            else

            {

                return digui(a - 1) + digui(a - 2);

            }

        }    

 

第二个问题是它的运算顺序。

对于递归,我认为跟数列是差不多的,等差或者是等比数列,而上面的这个递归则是斐波那契数列的类似的模型,符合了F(n)=F(n-1)+F(n-2)的规律,这是题外话。

只针对这个函数来说,运算数序是先将digui(a-1)的值求出来,再将digui(a-2)的值求出来,最后相加,也就是递归的次序互不影响。

你可能感兴趣的:(递归)