高精度计算阶乘pascal程序。
function mult(x,y:string):string;
var
a,b,c:array[1255] of shortint;
ia,ib,ic:integer;
i,j,k:integer;
m,p,q:integer;
temp:string;
t:string[1];
begin
ia:=length(x);
ib:=length(y);
for i:=1 to ia do a[i]:=ord(x[ia+1-i])-ord('0');
for i:=1 to ib do b[i]:=ord(y[ib+1-i])-ord('0');
for i:=1 to 255 do c[i]:=0;
for i:=1 to ia do begin
p:=0; {进位}
for j:=1 to ib do begin
m:=a[i]b[j]+p+c[i+j-1];
q:=m mod 10;
c[i+j-1]:=q;
p:=m div 10;
end;
c[i+ib]:=p;
end;
k:=0;
for i:=255 downto 1 do if c[i]<>0 then
begin k:=i; break; end;
temp:='';
for i:=k downto 1 do begin str(c[i]:1,t); temp:=temp+t; end;
mult:=temp;
end;
var
n,i:integer;
s,st:string;
begin
n:=10;
st:='1';
for i:=2 to n do begin
str(i:0,s);
st:=mult(st,s);
writeln(i:3,' ',st);
end;
end
#include <stdioh>
#include <stdlibh>
int Foctorial(int num)
{
int result = 1;
int i;
for(i = 1; i <= num; i++)
{
result = i;
}
return result;
}
int main(void)
{
int num = 8;
int i;
for(i = 1; i <= num; i++)
{
printf("%d的阶乘为:%d\n",i,Foctorial(i));
}
return 0;
}
n是形式参数,它用来接受来自主函数的实参也就是当函数调用的时候fac(i)中的i来替换这里的n
当第一次调用的时候,i=1(实参)传给n(形参),n=1; f=fn就等于1=11;此时f=1;当第二次调用的时候,n=2,f=fn就是把fn等于12赋给f,此时f=2,依次类推
你能看懂吗
我一写一个:
#include "stdioh"int m;
int fact(int n){
m++;
if(n==1 || n==0)
return 1;
else
return nfact(n-1);
}
int main(void){
int i,sum;
for(sum=0,i=1;i<=3;i++)
sum += i&1 fact((i<<1)-1) : -fact((i<<1)-1);
printf("The result is %d\n",sum);
printf("Call 'fact' %d times in total\n",m);
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)