题目描述:
猴子吃桃问题。猴子第1天摘下若干个桃子, 当即吃了一半,还不过瘾,又多吃了个。 第2天早上又将剩下的桃子吃掉一半, 又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时,就只剩一个桃子了。求第 1天共摘多少个。
方法1:循环法
由数学知识解题,最简单的方法。
代码实现:
#include <stdio.h>
int main()
{
int n, i, a = 1;
for (i = 9; i >0; i--)
{
n = (a + 1) * 2;
a = n;
}
printf("总数为%d\n", n);
return 0;
}
运行结果:
方法二:函数法
调用函数实现
代码实现:
#include <stdio.h>
int num1(int y)
{
int a;
a = (y + 1) * 2;
return a;
}
int main()
{
int x, i;
for (x = 1, i = 9; i >= 1; i--)
x = num1(x);
printf("%d\n", x);
}
运行结果:
方法三:不使用关键字
不使用for等关键字
代码实现:
#include <stdio.h>
int num(int day)
{
int a = 1;
int x = (day < 10) && (a = 2 * num(day + 1) + 2);
return a;
}
int main()
{
int sum;
sum = num(1);
printf("%d\n", sum);
return 0;
}
运行结果: