递归函数的使用

年龄推断问题

#if 0
有 5 个人坐在一起, 问第 5 个人多少岁? 他说比第 4 个人大 2 岁。 问第 4 个人岁
数, 他说比第 3 个人大 3 岁。 问第 3 个人, 又说比第 2 个人大 2 岁。 问第 2 个人, 说
比第 1 个人大 2 岁。 最后问第 1 个人, 他说是 10 岁。 请问第 5 个人多大?
#endif

#include "stdafx.h"

int getAge(int n)
{
	if (1 == n)
	{
		return 10;  //第一人年龄为10岁
	}
	else
	{
		return getAge(n - 1) + 2;   //后一人的年龄比前一人的年龄大2岁
	}
}


int _tmain(int argc, _TCHAR* argv[])
{

	int age = getAge(5); //求第五个人的年龄

	printf("%d\n", age);

	return 0;
}

猴子吃桃问题

#if 0
猴子第一天摘下若干个桃子, 当即吃了一半, 还不过瘾, 又多吃了一个。 第二天
早上又将剩下的桃子吃掉一半, 又多吃了一个。 以后每天早上都吃了前一天剩下的一
半零一个。 到第 10 天只剩下一个桃子了。 求第一天共摘了多少?
#endif

#include "stdafx.h"


int peach(int day)
{
	if (10 == day)
	{
		return 1;    
	}
	else
	{
		return (peach(day + 1) + 1) * 2;
	}
}

int _tmain(int argc, _TCHAR* argv[])
{

	int count = peach(1); //求第一天的桃子数量
	printf("%d\n", count);

	return 0;
}


阶乘问题

#include "stdafx.h"

int factorial(int n)
{
	if (0 == n)
	{
		return 1;   //0!=1
	}
	else
	{
		return n*factorial(n - 1);
	}
}

int _tmain(int argc, _TCHAR* argv[])
{
	int number = 7;
	int value = factorial(number);
	printf("%d!=%d\n", number, value);

	return 0;
}


递归结构

递归返回 func(递归条件)
{
if (递归终止条件)
终止处理;
else
func(趋于递归终结的条件);
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值