黑马程序员技术交流社区
标题:
递归函数见解
[打印本页]
作者:
goldboy
时间:
2015-6-11 21:45
标题:
递归函数见解
在看基础视频时,听到李老师讲解递归函数,之前也了解学习过递归函数,但此次听完后,颇有感触。
递归函数简单的说就是自己调用自己,如果没有条件限制,必定是死循环,所以递归函数必须要有条件限制,且必须有条件为假,此时递归函数结束运行。
递归函数的规律与高中所学的数学数列非常相似,
记得
有一个公式:
a
n
=
a
n-1
+b
;
递推函数的规律和这是一样的,比如求n的阶乘,用递归函数思路,
n != n*(n-1)*(n-2)*...*2*1
,我们,知道
1!=1,2!=1!*2,,n!=(n-1)!*n
,其程序代码如下:
#include <stdio.h>
int factorial(int n){
int result;
if(n==1){result = 1;
}else{
result = factorial(n-1)*n //数列中的
an = an-1 + b
}
return result;
}
int main(){
int n=-1;
printf("请输入所需要计算的阶乘n的值");
scanf("%d",&n);
int factorial(n);
printf("%d",result);
return 0;
}
基本思路如下:要求n!,必须得到(n-1)!,要得到(n-1)!,必须得到(n-2)!,以此类推,最后必须得到1!,1!的阶乘是一个已知值,得到了1!的值,就可以算出2!的值....就可以算出(n-1)!的值,最后算出n!的值。这就是一个进栈出栈的过程。
作者:
goldboy
时间:
2015-6-11 22:11
初学者,敬请见谅
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2