帮忙看看是怎么回事(小程序)??

duanliyu 2006-03-13 10:14:26
猴子吃桃问题
#include <iostream.h>
#include <stdlib.h>
int sum(int n)
{
int sum1;//定义最后一天剩下了1个桃子
if(n==1)
sum1=1;
if(n>1)
{
return 2*(sum(n-1)+1);//递归调用,实际上就是sum(n)=2*(sum(n-1)+1)
}
return true;
}
void main()
{
int m=0;
cout<<"请输入猴子吃桃的天数:";
cin>>m;
if(m==0)
cout<<"您输入的天数不符合规则!!!!!"<<endl;
if(m>=1)
{
sum(m);
cout<<m<<"天前猴子总共摘了"<<sum(m)<<"个桃子~~~~"<<endl;
}
system("pause");
}
我定义sum函数为int,为什么最后算出来的结果能有那么大??
假如m=30,结果是1610612734,怎么回事呀,有符号整形不是-32768~32767之间么??
...全文
64 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dnliophsam 2006-03-14
  • 打赏
  • 举报
回复
基本整型按长度只分为long int 和 short int,在32位系统中前者占4个字节通常long可以省略,后者占2个字节
另外你的函数写的很不规范
在if(n > 1)的时候返回整型怎么在后边又用return true返回布尔型,虽然本质上都是一样,但是这样降低程序的可读性
菜牛 2006-03-14
  • 打赏
  • 举报
回复
32
duanliyu 2006-03-13
  • 打赏
  • 举报
回复
是-2的63次方到2的63次方减1吗??
duanliyu 2006-03-13
  • 打赏
  • 举报
回复
那么long型的在32位机器上是多少呀??
vcmute 2006-03-13
  • 打赏
  • 举报
回复
>有符号整形不是-32768~32767之间么
那是说在16位机上,目前大部分int在32位机上

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧