黑马程序员技术交流社区

标题: 递归函数见解 [打印本页]

作者: goldboy    时间: 2015-6-11 21:45
标题: 递归函数见解
      在看基础视频时,听到李老师讲解递归函数,之前也了解学习过递归函数,但此次听完后,颇有感触。
      递归函数简单的说就是自己调用自己,如果没有条件限制,必定是死循环,所以递归函数必须要有条件限制,且必须有条件为假,此时递归函数结束运行。
      递归函数的规律与高中所学的数学数列非常相似,记得有一个公式:an = an-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