猴子吃桃 递归
public class RecursionExercise02 {public static void main(String[] args) {
int day = 9;
Mytool t1 = new Mytool();
int peachNum = t1.peach(day);
if (day != -1) {
System.out.println("第" + day + "天还有" + peachNum + "个桃子");
}
}
static class Mytool {
public int peach(int day) {
if (day == 10) {
return 1;
} else if (day >= 1 && day <= 9) {
return (peach((day + 1) + 1) * 2);
} else {
System.out.println("请输入0-10之内的数值");
return -1;
}
}
}
}
猴子吃桃子问题:有一堆桃子,猴子第一天吃了其中的一半,并再多吃了一个! 以后每天猴子都吃其中的一半,然后再多吃一个。当到第 10 天时, 想再吃时(即还没吃),发现只有 1 个桃子了。问题:最初共多少个桃子? 答案是:1534
#include <stdio.h>
int monkey(int d)
{
int i , r ;
if(d > 1) r = (monkey(d - 1) + 1) * 2 ;
else r = 1 ;
return r ;
}
int main(void)
{
printf("%d\n" , monkey(10)) ;
}
编译、运行实况:
D:\\>g++ -o x x.c
D:\\>x
1534
D:\\> jackz007 发表于 2022-6-9 23:18
答案是:1534
编译、运行实况:
哥 我知道别的方法也可以 我用的是java递归的方法 能看看我的错误在哪嘛 ,我运行结果第一天是负32
帅雷必成c王 发表于 2022-6-10 10:12
哥 我知道别的方法也可以 我用的是java递归的方法 能看看我的错误在哪嘛 ,我运行结果第一天是负32 ...
第一天的桃子数不是算出来的,而是递归的根,应该直接赋值为 1。
这样,倒数第 1 天是 1,倒数第 2 天是 (1 + 1)* 2 = 4,倒数第 3 天是(4 + 1)* 2 = 10,倒数第 4 天是 (10 + 1)* 2 = 22,倒数第 5 天是(22 + 1)* 2 = 46。 jackz007 发表于 2022-6-10 10:49
第一天的桃子数不是算出来的,而是递归的根,应该直接赋值为 1。
这样,倒数第 1 天是...
是直接赋值1的呀 第十天我不就是赋值1了嘛 第一个if 帅雷必成c王 发表于 2022-6-10 10:51
是直接赋值1的呀 第十天我不就是赋值1了嘛 第一个if
public class RecursionExercise02 {
static class Mytool {
public int peach(int day) {
if (day > 1) {
return (peach(day - 1) + 1) * 2;
} else {
return 1 ;
}
}
}
public static void main(String[] args) {
int day = 10 ;
Mytool t1 = new Mytool() ;
int peachNum = t1 . peach(day);
if (day != -1) {
System.out.println("第" + day + "天还有" + peachNum + "个桃子");
}
}
} jackz007 发表于 2022-6-10 11:16
谢谢我懂了我把T类包含在主方法之内了 所以才会这样错
页:
[1]