70,037
社区成员
发帖
与我相关
我的任务
分享#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);
}