2017-10-02 1 views
-4

아래 코드는 사용자에게 숫자를 입력하도록 요청하고 각 숫자를 더하여 합계를 계산합니다. 예를 들어, 내가 123을 입력하면 (1 + 2 + 3)을 실행하여 6을 출력합니다. 다음과 같은 재귀 적 메소드가 있습니다 :public static int sumDigits (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; 
    } 
} 
+0

재귀 함수는 자체를 호출하는 함수입니다. 'sumDigits'는 재귀 함수가 아닙니다. – Mureinik

+0

코드에 재귀가 없습니다. 당신이 무엇을 의미 하는지를 이해할 수 없다면 재귀를 이해하는 것이 매우 어려울 것입니다. – Gatusko

+0

분명히 당신의 질문은'oracle'과는 아무런 관련이 없습니다. StackOverflow 웹 사이트가 게시물에 추가 한 태그를 검토하고 적절하게 편집하십시오. 이번에는 당신을 위해서. – mathguy

답변

0

이 같은 뭔가를 찾고 :

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

재귀 기능은 작업의 한 단계를 수행 한 다음 최종 조건의 일종으로 다음 단계를 위해 자신을 호출합니다.

이 경우 0에 도달 할 때까지 현재 숫자를 그 아래에있는 모든 숫자의 합계에 더하고 싶습니다.

관련 문제