计算n的阶乘和2的n次方的算法及复杂度分析

哪个高手帮忙啊 后天就要考试啦!!!紧急!!!
最好发送到wangruifeng0722@126.com
谢谢啊!!!

第1个回答  2007-01-05
阶乘很简单啊
function factorial(n:integer):longint;
var
i:integer;
s:longint;
begin
s:=1;
for i := 2 to n do
s:=s*n;
factorial:=s
end;
时间O(n)
空间O(n)

2的n次方就更简单了,一个表达式
s:=exp(ln(2)*n);
如果你怕real和integer/longint的问题,那就该成s:=round(exp(ln(2)*n));
因为2^n=e^(ln2^n)=e^(ln2*n)
时间O(1)
空间O(1)本回答被网友采纳
第2个回答  2007-01-05
n的阶乘
main()
{int i,s=1,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
s=s*i;
printf("%d",s);
}

2的n次方
main()
{int i,s=1,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
s*=2;
printf("%d",s);
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网