试图理解递归是如何工作的

时间:2017-10-02 21:44:09

标签: java recursion methods jgrasp

下面的代码要求用户输入一个数字,然后将每个数字相加以获得总和。例如,如果我输入123,它将执行(1 + 2 + 3),然后输出6.我有递归方法,它是: public static int sumDigits(long n)但是我不确定它什么时候被调用或者它是如何工作的,还有long n声明是什么意思?

//this is my code
import java.util.Scanner;

 public class Practice {
    public static void main(String[] args) {

  Scanner input = new Scanner(System.in);

System.out.print("Enter a integer: ");

    long n = input.nextLong();
// Display the sum of all the digits in the integer
  System.out.println("The sum is: " + sumDigits(n));
}    

  //recrusve method that computes the sum of the digits in an integer
    public static int sumDigits(long n) {
       int sum = 0;

    while (n > 0)
      {
           sum += n % 10;
           n /= 10;
        }
     return sum;
   }
}

1 个答案:

答案 0 :(得分:0)

你正在寻找这样的东西:

private long sumDigits(long n)
{
  if(n <= 0)
  {
    return 0;
  }
  return n + sumDigits(n - 1);
}

递归函数在一个操作中执行一个步骤,然后使用某种结束条件调用自己进行下一步。

在这种情况下,您希望将当前数字添加到其下方所有数字的总和,直到达到零。