with Ada.Text_IO,Ada.Integer_Text_IO;
use Ada.Text_IO,Ada.Integer_Text_IO;
procedure FuncRecr is
START :constant :=-2;
STOP :constant :=5;
Result:Integer;
Data_Value:Integer;
function Factorial_Possible(Number:Integer)return Boolean;
function Factorial(Number :Integer)return Integer is
begin
if not Factorial_Possible(Number)then
Put("Factorial not possible for");
Put(Number,4);
New_Line;
return 0;
end if;
if Number =0 then
return 1;
elsif Number =1 then
return 1;
else
return Factorial(Number-1)*Number;
end if;
end Factorial;
function Factorial_Possible(Number:Integer)return Boolean is
begin
if Number >=0 then
return TRUE;
else
return FALSE;
end if;
end Factorial_Possible;
begin
Put("Factorial program!");
New_Line(2);
for Number_To_Try in START..STOP loop
Put(Number_To_Try,3);
if Factorial_Possible(Number_To_Try) then
Result:=Factorial(Number_To_Try);
Put(" is legal to factorialize and the result is!");
Put(Result,6);
else
Put(" is not legal to factoialize");
end if;
New_Line;
end loop;
New_Line;
Data_Value:=4;
Result:=Factorial(2-Data_Value);
Result:=Factorial(Data_Value+3);
Result:=Factorial(2*Data_Value-3);
Result:=Factorial(Factorial(3));
Result:=Factorial(4);
Result:=Factorial(0);
end FuncRecr;
089.对函数的递归
最新推荐文章于 2022-11-23 12:07:13 发布
本文介绍了一个使用Ada语言实现的阶乘程序,通过定义阶乘函数和判断阶乘是否可能的辅助函数,展示了从-2到5的整数阶乘计算过程,并通过具体数值验证了函数的正确性。
2万+

被折叠的 条评论
为什么被折叠?



