我是递归的新手,我的老师给了我们这个代码来检查:
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
答案 0 :(得分:1)
最好的办法是获得一张纸和一支铅笔,并在每次通话时记录a和b的值。从小(呃)(例如a = 2,b = 3)开始,看看递归停止的位置和方式,然后你可以从那里开始工作。
编辑:向我们展示你尝试过的东西,如果你真的无法弄清楚我们可以试着指出你正确的方向(懒惰和真正不理解之间有区别)。
答案 1 :(得分:0)