定义一个计算阶乘的函数并调用此函数输出1到十的阶乘

定义一个计算阶乘的函数并调用此函数输出1到十的阶乘,第1张

高精度计算阶乘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;

}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/11676968.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存