典北 2022-10-28 20:01 采纳率: 50%
浏览 22
已结题

刚开始学习c语言不久,布置的问题不太懂

img


请问这个图的程序应该怎么写啊,我不太懂。希望可以有人能够帮帮我!

  • 写回答

3条回答 默认 最新

  • 春休夏末 2022-10-28 20:49
    关注

    猴子吃桃 根据题目第十天剩余1个桃子,那么就可以设第九天的公式 x - x/2 - 1 = 1

    如果是没有学过递归的话 可以用循环遍历出来结果

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
        float tmp = 0;
        for (int i = 1; i < 10000; ++i) {
            tmp = i;
            for (int j = 0; j < 10-1; ++j) {
                tmp = tmp - tmp / 2.0 - 1;
            }
            if (tmp == 1) {
                printf("第一天一共%d个桃子\n", i);
                break;
            }
        }
        return 0;
    }
    
    

    结果如下:

    img

    如果学过函数和递归的话 可以用递归做出来
    把公式进行变换
    设后一天剩余的桃子数为a
    x - x/2 - 1 = a
    x - 0.5x = a + 1
    0.5x = a+1
    x = (a+1)/ 0.5
    x = (a+1)*2
    得出每天的桃子数是后一天剩余的桃子数量+1x2
    第10天是1 就是退出递归的条件
    代码如下

    
    #include <stdio.h>
    #include <stdlib.h>
    
    int func(int n)
    {
        if (n == 1)
            return 1;
        return 2 * (func(--n) + 1);
    }
    
    int main(void)
    {
        int count = func(10);
        printf("第一天一共%d个桃子\n", count);
        return 0;
    }
    

    结果如下:

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月8日
  • 已采纳回答 10月31日
  • 创建了问题 10月28日

悬赏问题

  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。