需要一些帮助来解释这个递归代码

时间:2014-01-14 22:31:31

标签: java recursion

我是递归的新手,我的老师给了我们这个代码来检查:

public long rudolph(long a, long b){
 if(b==0)
   return a;
 else 
   return rudolph(b, a % b);
}

我试图通过每次使用a和b的不同值来遵循逻辑,但我无法理解结果。如何在不运行的情况下解决这个问题?基本上试图弄清楚这段代码的作用。

示例:

if a = 9 and b = 7:
return rudolph(7,2);
return rudolph(2,1);
return rudolph(1,0);
return 1

if a = 10 and b = 5:
return rudolph(5,0);
return 5

if a = 5 and b = 2:
return rudolph(2,1);
return rudolph(1,0);
return 1

2 个答案:

答案 0 :(得分:1)

最好的办法是获得一张纸和一支铅笔,并在每次通话时记录a和b的值。从小(呃)(例如a = 2,b = 3)开始,看看递归停止的位置和方式,然后你可以从那里开始工作。

编辑:向我们展示你尝试过的东西,如果你真的无法弄清楚我们可以试着指出你正确的方向(懒惰和真正不理解之间有区别)。

答案 1 :(得分:0)

该函数返回Greatest common divisor