递归函数的转换

Conversion of a recursive function

本文关键字:转换 递归函数      更新时间:2023-10-16

以下程序是一个递归函数,它从两个正整数计算一个值。

int riddle (int i, int j)
{
   if (j==0) return i;
   return riddle(j, i%j);
}

我想知道一个 while-loop 如何在没有任何 if 语句的情况下将该程序转换为非递归函数?

非常感谢您的帮助

假设 i>j,您可以使用 while 使用递归查找两个 no. 的 HCF 的过程。 试试这个:

int i=val1,j=val2;
            while (j != 0)
            {
                int t;
                t = j;
                j = i % j;
                i = t;
            }

首先,确定结束递归的条件,这将是结束while循环的条件。

接下来,确定要在递归期间执行的语句,这些语句将构成while循环的主体。

最后,确定要在递归结束时执行的语句,这些语句将在while循环之后立即执行。

伪代码:

while condition to perform recursion is true
{
  perform statements to be executed during recursion
}
perform statements to be executed upon exiting recursion