帮助理解数学递归方法

JBo*_*Boy 1 java recursion

我遇到了这种浏览网页搜索递归方法的方法.相信我,我无法得到它的逻辑.基本上,此方法查找给定数量的密码量.

public int aantalCijfers(int n)
{
    if (n < 10)
    {
        return 1;
    }
    else if ((n > 9) && (n < 100))
    {
        return 2;
    }
    else
    {
        return (aantalCijfers(n / 100) + 2);
    }
}
Run Code Online (Sandbox Code Playgroud)

让我们举个例子.让我们假设我们使用5000作为参数,我的结论将如下面的步骤:

  1. 5000
  2. 52
  3. 2(由于52之后的else-if语句返回9到100之间)

但相反,它返回4,它工作正常,而我期待它不.请问,如果你弄清楚它是如何工作的,请指出这个方法如何得出正确结论的步骤?

Chr*_*ung 5

当然.:-)但首先,请注意功能说aantalCijfers(n/100) + 2,而不是 aantalCijfers(n/100 + 2).我有一种感觉,你可能误解了这一点.

基本情况是1或2位数.除此之外,除以100(因此剥离两位数),重新计算,并在结果中加2.

以5000为例:

  1. digits(5000)
  2. digits(50) + 2
  3. 2 + 2
  4. 4

你可以进一步扩展它.比如说,使用1000000.

  1. digits(1000000)
  2. digits(10000) + 2
  3. digits(100) + 2 + 2
  4. digits(1) + 2 + 2 + 2
  5. 1 + 2 + 2 + 2
  6. 7