「已注销」 2022-08-15 20:56 采纳率: 90.2%
浏览 128
已结题

小猴吃桃问题(递归算法)

问题遇到的现象和发生背景 第一天悟空吃掉桃子总数一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。聪明的你,请帮悟空算一下,他第一天开始吃的时候桃子一共有多少个呢?输入数据有多组,每组占一行,包含一个正整数n(1<n<30),表示只剩下一个桃子的时候是在第n天发生的。
问题相关代码,请勿粘贴截图
#include<stdio.h>
int f(int x)
{
    if(x==0)return 0;
    else{return f(x-1)*2+1;
    }
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF&&n>1&&n<30){
        printf("%d\n",f(n));
    }
    return 0;
}

运行结果及报错内容 输入2,输出7
我的解答思路和尝试过的方法 苦思冥想半天不知道这个递归方法该怎么写,我自己的思路是先假设一个数列,设a(n)为第n天剩下的桃子数量,a(n)=1,有a(n)=2*a(n-1)+1
我想要达到的结果 求指导一下写递归的思路与函数格式,感谢!
  • 写回答

2条回答 默认 最新

  • .魚肉 2022-08-15 21:35
    关注
    
    #include<stdio.h>
    // 递归函数 
    int fun(int day){
        if(day == 1)    //如果倒数倒最后一天
            return 1;    //则返回 1 ,代表最后一天的数据 
        else{
            return (fun(day-1)+1)*2;    //否则,计算前一天桃子数 
        }
    }
    int main(){
        int date = 0;    //总天数 
        int num= 0;        //总桃子数 
        printf("只剩一个桃子是第几天呢?:"); 
        scanf("%d",&date); 
        num = fun(date);    //递归桃子数 
        printf("第一天有%d个桃子",num);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月23日
  • 已采纳回答 8月15日
  • 创建了问题 8月15日

悬赏问题

  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据