function   maxyueshu(var num1,num2:integer):integer;forward;
begin
     if num2=0 then
    result:=num1
  else
45行:   result:=maxyueshu(num2,num2 mod num1);[Error] Unit1.pas(45): Types of actual and formal var parameters must be identical
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'这是一公约数算法,怎么不能在编译?

解决方案 »

  1.   

    把函数声明中的var去掉,因为使用了var的话,则表示参数num2必须是已经声明的一个变量,而不能是类似于(num2 mod num1)这样的一个计算值或者常量
      

  2.   

    function  Tform1.maxyueshu(var num1,num2:integer):integer;stdcall;
    begin
         if num2 = 0 then
          result :=num1
      else
      num1 := num2;
      num2 := trunc(num1/num2);
      result:=maxyueshu(num1,num2);
    end;
      

  3.   

    谢谢!我已经解决了,我试一下核桃的,45522341 大哥的好象有问题。
    function   maxyueshu(var num1,num2:integer):integer;forward;
    function   maxyueshu(var num1,num2:integer):integer;
    begin
       num2:=num2 mod num1;
       if num2=0 then
       begin  result:=num1;
       end else
       result:=maxyueshu(num2,num1);
    end;
    ok!  
    求两个任意长整数的乘积算法;