原来函数的递归调用这么简单,通过一个简单的例子带你深入理解认识它

通过递归函数实现从第1个学生年龄为10岁出发,逐步推算出第5个学生的准确年龄。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有5个学生坐在一起,问第5个学生多少岁,他说比第4个学生大2岁。问第4个学生多少岁,他说比第3个学生大2岁。问第3个学生多少岁,又说比第2个学生大2岁。问第2个学生,说比第1个学生大2岁,最后问第1个学生,他说是10岁。请问第5个学生多大。

int age(int n)//定义递归函数
{
	int c;
	if (n == 1)
		return 10;//如果n等于1,反正10
	else
		c = age(n - 1) + 2;
		return c;//如果n年龄不等于1,年龄是前一个学生的年龄加2,最后返回年龄
}
#include<stdio.h>
int main()
{
	int age(int n);
	printf("No.5.student_age:%d\n",student_age(5));//输出5个学生的年龄
	return 0;
}

输入结果:

No.5.student_age:18

解题思路:

  1. 要求第5个学生的年龄,就必须先知道第4个
  2. 要求第4个学生的年龄,就必须先知道第3个
  3. 要求第3个学生的年龄,就必须先知道第2个
  4. 要求第2个学生的年龄,就必须先知道第1个
  5. 而且每个学生的年龄都比其前1个学生的年龄大2

数学公式如下:

age(n)=10(n=1) age(n)=10 (n=1) age(n)=10(n=1)

age(n)=age(n−1)+2(n>1) age(n)=age(n-1)+2 (n>1) age(n)=age(n1)+2(n>1)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qsfexW8m-1667653019340)(C:\Users\LENOVO\Desktop\无标题.png)]

age(5)是main函数调用的,其余4次是在age函数中调用的,即递归4次;一次一次的递归调用,到age(1)得到确定的值,然后再递推出age(2)→age(3)→age(4)→age(5)

age(5)=age(4)+2→18

age(4)=age(3)+2→16

age(3)=age(2)+2→14

age(2)=age(1)+2→12

age(1)=10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值