麻煩大家給解答下這個問題
#include <stdio.h>
int a(int b)
{
? ? if(b==10)
? ? {
? ? ? ? return 1;
? ? }
? ? else
? ? {
? ? ? ? printf("第%d天猴子剩下的桃子數(shù)為%d個\n",b,2*(a(b+1)+1));
? ? ? ? return 2*(a(b+1)+1);
? ? }
}
int main()
{
? ? printf("%d\n",a(1));
}
這樣為什么得不到正確的結(jié)果啊?錯在哪?
2018-03-23
因為你直接表達(dá)式的話就相當(dāng)于用了兩次遞歸,先聲明再用就可以了。
#include <stdio.h>
int a(int b)
{
? ? if(b==10)
? ? {
? ? ? ? return 1;
? ? }
? ? else
? ? {
? ? ? ? int num=2*(a(b+1)+1);
? ? ? ? printf("第%d天猴子剩下的桃子數(shù)為%d個\n",b,num);
? ? ? ? return num;
? ? }
}
int main()
{
? ? printf("%d\n",a(1));
}