Ada 如何使用递归将两个整数的乘积相加?

Ada 如何使用递归将两个整数的乘积相加?,ada,Ada,在这段代码中,我要求用户输入两个整数(Index,Mindex),然后我显示1..Index和1..Mindex之间的所有整数。这里我的问题是,我不知道如何将索引中的整数和`Mindex中的整数的值相乘,然后将这两个值的乘积相加 带有Ada.Text\u IO;使用Ada.Text\u IO; 使用Ada.Integer\u Text\u IO;使用Ada.Integer\u Text\u IO; 程序Add is 索引,Mindex:整数; 程序计算(项目:整数)为 新的_值:整数; 开始 看

在这段代码中,我要求用户输入两个整数(
Index
Mindex
),然后我显示
1..Index
1..Mindex
之间的所有整数。这里我的问题是,我不知道如何将
索引中的
整数
和`Mindex中的
整数
的值相乘,然后将这两个值的乘积相加

带有Ada.Text\u IO;使用Ada.Text\u IO;
使用Ada.Integer\u Text\u IO;使用Ada.Integer\u Text\u IO;
程序Add is
索引,Mindex:整数;
程序计算(项目:整数)为
新的_值:整数;
开始
看跌期权(“指数的价值为现在”);
放置(项目);
新线;
新的_值:=(项目-1);
如果新值>0,则
计算值(新的_值);
如果结束;
结束计算;
开始
获取(索引);
Get(Mindex);
计算(指数);
新线;
calc(Mindex);
结束添加;

阶乘将乘法与每一个递减值保持链接:5!=5 * 4 * 3 * 2 * 1 = 120. 为了进行递归,在递归函数中需要有两种情况:如果值大于1,则将该值与下一个最小值相乘。这是递归部分,您将在阶乘(N)的内部调用阶乘(N-1)。否则只返回1(0的阶乘在数学上是1,所以1!和0!都等于1)

Ada中的工作方式是:

函数阶乘(值:Natural)返回的是Natural
开始
如果值>1,则
--继续用递归链接乘法
返回值*阶乘(值-1);
其他的
--无需链接,因为结果始终为1
返回1;
如果结束;
末端因子;

然后,您可以对每个数字调用该阶乘函数并添加结果。

您是在寻找函数还是其他函数?只是一个简单的递归。例:当用户写4和3时,我的代码应该显示这个整数的乘积,即4*3*2*1=24和3*2*1=6,然后将这两个整数(24+6)相加。如果你想找一个,请你的问题澄清并更新,以显示你选择的方法。只需使用递归函数计算每个阶乘,然后把这两个结果相加,你能看到递归吗?然后思考:给定事实(N-1),你们将如何计算事实(N)?你知道事实(1)的价值吗?