我遇到了浏览网页搜索递归方法的方法。 相信我,我无法得到它的逻辑。基本上,此方法查找给定数量的密码数量。
public int aantalCijfers(int n)
{
if (n < 10)
{
return 1;
}
else if ((n > 9) && (n < 100))
{
return 2;
}
else
{
return (aantalCijfers(n / 100) + 2);
}
}
我们举个例子。让我们假设我们使用5000作为参数,我的结论将如下所示:
但相反,它返回4,它工作正常,而我期待它不会。 请问,如果你弄清楚它是如何工作的,请指出这个方法如何得出正确结论的步骤?
答案 0 :(得分:5)
不确定。 :-)但首先请注意,该功能显示aantalCijfers(n/100) + 2
,不是 aantalCijfers(n/100 + 2)
。我有一种感觉,你可能误解了这一点。
基本情况是1或2位数。除此之外,除以100(因此剥去两位数),重新计算,并在结果中加2。
以5000为例:
digits(5000)
digits(50) + 2
2 + 2
4
您可以进一步扩展。比如说,使用1000000。
digits(1000000)
digits(10000) + 2
digits(100) + 2 + 2
digits(1) + 2 + 2 + 2
1 + 2 + 2 + 2
7
答案 1 :(得分:1)
非常简单
答案 2 :(得分:1)
实施例
aantalCijfers(5000)
returns (aantalCijfers(50) which returns 2) + 2 = 4
答案 3 :(得分:1)
第二步你错了,它是f(50)+2,而不是50 + 2。 而f(50)是第二个if,返回2,所以它是2 + 2,产生4。