帮忙看看是怎么回事(小程序)??
猴子吃桃问题
#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之间么??
问题点数:10、回复次数:5Top
1 楼vcmute(BCare4 H1Rest Good9!)回复于 2006-03-13 22:18:37 得分 4
>有符号整形不是-32768~32767之间么
那是说在16位机上,目前大部分int在32位机上Top
2 楼duanliyu(板儿砖)回复于 2006-03-13 22:20:47 得分 0
那么long型的在32位机器上是多少呀??Top
3 楼duanliyu(板儿砖)回复于 2006-03-13 22:23:25 得分 0
是-2的63次方到2的63次方减1吗??Top
4 楼Mackz(在相互)回复于 2006-03-14 01:46:37 得分 1
32Top
5 楼dnliophsam()回复于 2006-03-14 10:26:54 得分 5
基本整型按长度只分为long int 和 short int,在32位系统中前者占4个字节通常long可以省略,后者占2个字节
另外你的函数写的很不规范
在if(n > 1)的时候返回整型怎么在后边又用return true返回布尔型,虽然本质上都是一样,但是这样降低程序的可读性Top




