A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© goldboy 中级黑马   /  2015-6-11 21:45  /  755 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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


1 个回复

正序浏览
初学者,敬请见谅
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马