题目:
有5个人坐在一起,问第5个人多少岁,他说比第4个人大2岁。问第4个人多少岁,他说比第3个人大2岁。问第3人多少岁,他说比第2个人大2岁。问第2个人多少岁,他说比第1个人大2岁。最后问第1个人,他说他是10岁。编写程序,当输入第几个人时求出其对应的年龄。
思路:
根据题目描述,可知,他们的年龄这么巧,都是依次多2岁(实际生活中能遇到这么巧的事实在不多)。
本题用的知识点就是递归。
递归作为c语言重要的一部分,想必大家都学过(没学过的东西没关系,可以翻翻教材后面即可),所以我这里只用一个c语言代码举例。
// 值在减小、规模也在减小
int f(int n)
{
if(n<3)
printf("结束\n"); // 递归结束
else
n = f(n-1); // 在此递归
return n;
}
// 值在增大、规模却在减小
int f(int n)
{
if(n>7)
printf("结束\n"); // 递归结束
else
n = f(n+1); // 在此递归
return n;
}
答案:
好啦,既然明白本题知识点,那么做起来肯定容易多了,我们开始吧
#include
int age(int n)
{
int x; //年龄
if (n == 1) //我们把他们几个人从小到大排序
{
x = 10; //第一个人的年龄
}
else
x = age(n - 1) + 2;
return x;
}
int main()
{
int n;
printf("请输入其中一个人的年龄:");
scanf("%d", &n);
printf("第%d个人的年龄为%d\n", n,age(n));
return 0;
}
好啦,我们输出看下
好啦,正确
真诚的希望我的回答可以帮到遇到这个问题的同学。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)