不能理解,哭😭关于c语言的小毛病但我找不出来

问一下为什么我int换成double就不行了啊 int的话我数字小一点还可以运行不出错但换成double就不行了

题目是求猴子第一天拥有多少个桃子,猴子每天吃一掉半桃子后再吃一个
我用的是递归 t是数据的组数, n是天数, k是第n天猴子所剩下的的桃子数量
关键我想要这个数据能输出的范围更大所以我想换成double 但一换就出问题 萌新刚学c语言 求大佬帮忙看看👀吧

img

img

double肯定不行了,挑子数量就是整形嘛?不需要用递归,程序非常简单,天数就是循环次数,参考:

img

#include "stdio.h"
void main()
{
    int sum=1;//最后一天的桃子数量;
    int day,i;
    scanf("%d",&day);
    for(i=day-1;i>=1;i--){
        sum = (sum+1)*2;    
    }
    
    printf("共有%d个桃子.",sum);
    
}

没法看啊,hz作为递归函数,else部分也是要return的啊

额你看两份答案其实是一样的只是代码写法不同而已本质是一样的

img

img