C语言 用递归算法来解决猴子吃桃问题。:一天一只猴子摘下一堆桃子,吃了一半,觉得不过瘾,又多吃了一

C语言 用递归算法来解决猴子吃桃问题。:一天一只猴子摘下一堆桃子,吃了一半,觉得不过瘾,又多吃了一个,第2天接着吃了前一天剩下的一半,再多吃了一个,以后每天如此,直到第n天,只剩下1个桃子,问猴子一共摘了多少桃子? 我不用递归会写,用递归怎么写?

#include <stdio.h>

int n;                 //n作为全局变量

int peach(int x)       //表示第x天有几个桃子
{
    if(x < n)          //如果x不是最后一天,那么这一天桃子的数量等于明天桃子数加1再乘以2
        return 2*(peach(x+1) + 1);
    else if(x == n)    //如果是最后一天,返回1
        return 1;
    else
        return -1;    //异常

}

int main()
{
    scanf("%d",&n);    //输入题目中的n
    printf("%d\n",peach(1));
    return 0;
}

请采纳。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-03
#include <stdio.h>
int n; //n作为全局变量
int peach(int x) //表示第x天有几个桃子
{
if(x < n) //如果x不是最后一天,那么这一天桃子的数量等于明天桃子数加1再乘以2
return 2*(peach(x+1) + 1);
else if(x == n) //如果是最后一天,返回1
return 1;
else
return -1; //异常
}
int main()
{
scanf("%d",&n); //输入题目中的n
printf("%d\n",peach(1));
return 0;
}请采纳。
第2个回答  2019-07-13
#include<stdio.h>
int N; //吃到N天还没吃时,剩1个,全局变量
int funn(int n)
{
if(n==N)
return 1;
else
return 2*funn(++n)+2;
}
int main()
{
int days,y;
printf("输入多少天后剩一个\n");
scanf("%d",&N);
for(days=1;days<=N;days++)
{
y=funn(days);
printf("days%d\t%d\n",days,y);
if(y<0)
{
printf("输入有误");//N<=30不会溢出
break;
}
}
}
第3个回答  2015-12-01
10-5-1=4-2-1=1
相似回答