C语言递归函数(一)

递归:在调用一个函数的过程中又出现直接或间接地调用该函数自己本身,称为函数的递归调用。

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

第一种我们先用for循环来写:

1. 理清其中的关系,由题目可知: 第一个学生10岁,那么第二个学生就是12岁,以此类推第五个学生就是18岁。

#include <stdio.h>
int Age1(int n)
{
	int tmp = 10; //第一个学生的年龄为10岁
	for(int i=1; i<n; i++)  //若n=5,说明要求第五个学生的年龄,那就是tmp依次加2,最后是18,若是n=1这里会出现问题吗,实则是不会的,因为当n=1时for循环是没有执行的,所以tmp 还是10.
	{
		tmp += 2;
	}
	return tmp; //返回所求的年龄
}
int main()
{
	for (int i = 1; i <= 5; i++)
	{
		printf("%d\n", Age1(i));  //打印每个人的年龄
	}
	return 0;
}

调试结果为:

 第二种我们用递归法来写:

其中的规律为:

Age(n):第n个学生的年龄 == Age(n-1)+2
Age(n-1):第n-1个学生的年龄==Age(n-1)
Age(1):第1个学生的年龄==10      这是递归的停步准则,如果n==1,tmp=10,然后把10依次带入每一个Age( )中,求出最后要的年龄。

#include<stdio.h>
int Age(int n)
{
	int tmp;
	if(n == 1)
	{
		tmp = 10;
	}
	else
	{
		tmp = Age(n-1)+2;
	}
	return tmp;
}

int main()
{
	for (int i = 1; i <= 5; i++)
	{
		printf("%d\n", Age(i));
	}
	return 0;
}

调试结果为:

 最不适用于用递归函数的经典题目:斐波那契数列 

https://blog.csdn.net/hi332516_1/article/details/121554462

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值