转换递归函数

时间:2014-11-27 07:35:07

标签: c++

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

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

   return riddle(j, i%j);
}

我想知道一个while循环如何将这个程序转换为一个非递归函数而没有任何if -statement?

非常感谢你的帮助

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

首先,确定结束递归的条件,这将是结束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