浅谈递归函数

我的未来我决定 提交于 2019-12-05 09:04:17

1.什么是递归函数:就是在函数体内调用本函数。是一种调用模式,是一种逻辑程序基础的体现(类似于循环)。

当我们知道了什么是递归函数以后接下来的问题就是:

怎么写递归函数:

(1)声明函数(这里的步骤和普通函数的声明一样)。

(2)找使递归函数停止的条件(也是递归函数里最重要的一点)

(3)找关系(此时假设函数的功能已经实现,要找的关系就是找f(n)与f(n-1)的关系)

(4)用f(n-1)去实现f(n)的功能。

下面看一个简单的例子:

利用递归求斐波那契数列(1,1,2,3,5,8,13,21,34,55,89...)

// 第一步:先声明函数fn;
// 第二步:找临界关系:通过观察可以发现第一位和第二位的值都为1,所以临界值为n=1或者n=2时直接返回1,函数终止。
// 第二步:观察数列可以发现从第三位的值=第一位+第二位;第四位的值=第二位+第三位...依次类推
// 可以写成如下方式:
//             5   = 3         +      2
//                   1+2       +      1+1
//                     1+1
//第三步:通过上面的拆分发现上面的式子可以表达为:
//            fn(5) =fn(4)         +      fn(3)
//                   fn(2)+fn(3)   +      fn(2)+fn(1)
//                         fn(2)+fn(1)
//第四步:通过看上面的式子已经可以很明显的看出fn(n)与fn(n-1)的关系所以fn(n)=fn(n-1)+fn(n-2),当n为1或者n为2的时候终止
function fn(n){
    if(n==1||n==2){
        return 1;
    }
    else{
        return fn(n-1)+fn(n-2);
    }
}// 此时可以运行查看第四位的值是否正确
console.log(fn(4));

打开控制台可以看到结果:

 

 注意:递归会消耗大量内存,但是它代表了逻辑程序基础的体现。

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!