出不来结猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,好不过瘾,又多吃了一个. 第二天早上又吃了剩下的桃子的一半,又多吃了一个。以后每天都吃了前一天剩

ALexexexex 2017-09-12 10:21:53
#include<stdio.h>
#include<stdlib.h>
int f(int day,int result);
int main()
{
int result=1,day=1;
printf("%d",f(1,1));
system("pause");
return 0;
}
int f(int day,int result)
{
return day==9?result:f(day++,(result+1)*2);

}

出不来结果啊。为啥?求大神
...全文
1890 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2017-09-13
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<stdlib.h>

int f(int day,int result);

int main(void)
{
    int result = 1, day = 1;
    printf("%d",f(1,1));
    system("pause");
    return 0;
}
int f(int day,int result)
{
    printf("day = %d\n", day);
    return day == 9 ? result:f(day++, (result+1)*2);

}
用这个程序看一下原因。你会发现day输出的都是1; 问题就出在后加1上,如果换成前增1就可以,或者直接f(day+1, (result+1) *2)也行。
#include<stdio.h>
#include<stdlib.h>

int f(int day,int result);

int main(void)
{
    int result = 1, day = 1;
    printf("%d\n",f(1,1));
    system("pause");
    return 0;
}
int f(int day,int result)
{
    printf("day = %d\n", day);
    return day == 9 ? result:f(++day, (result+1)*2);
    //return day == 9 ? result:f(day+1, (result+1)*2);

}
ALexexexex 2017-09-12
  • 打赏
  • 举报
回复
#include<stdio.h> int main() { int x=1,i; for (i=1;i<=10;i++) { x=(x+1)*2; } printf("猴子第一天摘了%d个桃子\n",x); return 0; } 这个其实更简单,但是我的为什么出不来呢。小白求解啊

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧