首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

s=1^1*2^2*3^3*4^4.n^n,s不大于100000000,该如何处理

2013-01-26 
s1^1*2^2*3^3*4^4...*n^n,s不大于100000000procedure TForm1.Button1Click(Sender: TObject)var temp,s,

s=1^1*2^2*3^3*4^4...*n^n,s不大于100000000
procedure TForm1.Button1Click(Sender: TObject);
var temp,s,i,j:integer;
begin
s:=1;
while s<100 do
begin
 for i:=1 to 100 do
 begin
 temp:=1;
 for j:=1 to i do
 temp:=temp*i;
 s:=s*temp;
 end;
end;
label1.caption:=inttostr(s);
end;






运行时label里面没有结果,这是哪里错了,求高人指教。。。。。。
[解决办法]
while循环一次,s值就超出了Integer表示的范围,超出了范围会变成负数,最后会变成0

所以while这个循环就一直在执行,死循环了
[解决办法]
楼主的算法S结果是:阶乘再乘以阶乘

比如for i:=1 to 100 do,当i=8时,是多少呢? 就是1*2!*3!*4!*5!*6!*7!*8!
继续循环下去,结果真不敢想象呀,而外面还有while循环

热点排行