浅谈对递归算法的理解……
递归: 所谓递归,就是既有传递,又有回归,与其说是传递与回归,初学不如理解是一种 “循序递进”与“规律约束”。 为什么这样说,因为递归算法相比较于循环在代码结构方面个人认为更加简洁清晰,清晰易懂,递归注重的是一种有序的规律,所以在每个程序开始之前,我们只要能找到一个使程序循序递进的规律;并且在整个过程都在用此规律进行传递,但是递归算法也有很大的缺点,会造成内存空间不足,从而形成内存溢出;所以针对这种缺点,就会引入“规律约束”,在每一次算法的的开始之前,先对算法进行一个规律约束,而这种约束可以理解为一个“归期”;即到这个归期不得已而为之…… eg:1 计算1+2+3+4+……+100的值。 function fn(n){ if(n==1)return 1; //归期 return n+fn(n-1); //规律 } console.log(fn(100)); eg:2 计算n 和 1/n!的阶乘。 1. n!function fn(n){ if(n==1)return 1; //归期 return n*fn(n-1); //规律 } console.log(fn(5));2. 1/n! function fn(n){ if(n==1)return 1; //归期 return 1/n*fn(n-1); //规律 } console.log(fn(5)); eg:3 斐波拉契数列