麻煩大家給解答下這個(gè)問(wèn)題
#include <stdio.h>
int a(int b)
{
? ? if(b==10)
? ? {
? ? ? ? return 1;
? ? }
? ? else
? ? {
? ? ? ? printf("第%d天猴子剩下的桃子數(shù)為%d個(gè)\n",b,2*(a(b+1)+1));
? ? ? ? return 2*(a(b+1)+1);
? ? }
}
int main()
{
? ? printf("%d\n",a(1));
}
這樣為什么得不到正確的結(jié)果?。垮e(cuò)在哪?
2018-03-23
因?yàn)槟阒苯颖磉_(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個(gè)\n",b,num);
? ? ? ? return num;
? ? }
}
int main()
{
? ? printf("%d\n",a(1));
}