年龄推断问题
#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(趋于递归终结的条件);
}
{
if (递归终止条件)
终止处理;
else
func(趋于递归终结的条件);
}