指针函数及递归函数学习(2)

c语言通常是在栈中分配自动变量的内存区域。这除了可以重复使用该区域来节约内存空间,还可以实现递归调用。
递归的调用就是函数对自己的调用。
递归函数是指一个函数的函数体中直接或间接的调用了该函数本身。
递归函数调用的执行过程分为两个阶段:

  1. 递归阶段:从原问题出发,按递归公式递推,从未知到已知,最终达到递归终止条件。
  2. 回归阶段:按递归终止条件求出结果,逆向逐步带入递归公式,回归到原问题求解。

问题一:简单运用递归实现n的阶层
int qjc(int);
int main(int argc, char * argv[]) {
int n;
int s;
printf(“请输入一个整数:”);
scanf("%d",&n);
s=qjc(n);
printf(“该数的阶层为:%d”,s);
return 0;
}
int qjc(int n){
if(n== 0||n==1){
return 1;
}else{
int a= n*qjc(n-1);
return a;
}
}

运行结果如图
问题二:斐波那契数列问题;
兔子出生问题:兔子在出生两个月后就有繁殖能力,每个兔子在一个月能生出一对小兔子。如果兔子不死的话,一年内能繁殖多少兔子?
思考:

  1. 一月:1;
  2. 二月:1;
  3. 三月:1+1;
  4. 四月:1+1+1;(二月的兔子*2+三月减二月的;)
  5. 五月:5;(三月的*2+四月减三月的;)
  6. 六月:…同理;

设当前的月份为n,所以函数的函数体为fsn;函数的返回体因该是fsn(n-2)*2+fsn(n-1)-fsn(n-2);

编程代码如下:
int fsc(int);
int main(int argc, char *argv[]) {
int n;
int s;
printf(“请输入月份:”);
scanf("%d",&n);
s=fsc(n);
printf("%d月后所有的兔子总数为:%d",n,s);
return 0;
}
int fsc(int n){
if(n== 1||n==2){
return 1;
}else{
int a;
a=fsc(n-2)*2+fsc(n-1)-fsc(n-2);
return a;
}
}

运行结果如上
运行结果如上
一年后的兔子数如图

开心 开心!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值