递归算法---阶乘(一)
2019-02-20 本文已影响0人
王小丫子
递归算法:就是一种直接或者间接调用自身的算法。
实现过程:一般通过函数或者子过程来完成,在函数或子过程的内部,编写代码直接或者间接地调用自己,即可完成操作
规则:把求解问题转化为比原来规模小且类别相同的问题,通过多次的递归调用,最终求出最小问题
的解,再通过最小问题的解返回到上次调用,求出次小问题
的解;然后在返回上层调用
,这样不断重复,最后就可以得到最终问题
的解。
本质:循环【只是这种循环它不是使用程序设计语言来实现的而是使用循环调用函数或者子过程的自身实现的】
【代码实现】
#include <iostream>
using namespace std;
/****************************阶乘******************************/
int factorial(int N){
if (N <= 1) {
return N;
}
return N*factorial(N-1);
}
int main(int argc, const char * argv[]) {
int resultNum = factorial(6);
cout<<"最终结果"<<resultNum<<endl;
return 0;
}
【逻辑分析】
【递归思想体现】
求解问题:6!=6x5x4x3x2x1 问题拆分转化过程:6!=6x5!=>5!=5x4!=>4!=4x3!=>3!=3x2!=>2!=2x1!=>1!=1(最小问题) 然后从最小问题返回次小问题2!=2x1层层返回直到最终返回求解问题