2017-02-14 4 views
-3

Я хотел бы знать, почему мой рекурсивный метод выполняется даже после того, как он выполнил оператор return. Я пытаюсь написать простую программу для вычисления факториала ввода, но факториал «4» возвращает «48», потому что он дважды умножает «2». Пожалуйста, найдите мой код ниже.Выполнение Java-рекурсии после оператора возврата

import java.io.*; 
import java.util.*; 
import java.text.*; 
import java.math.*; 
import java.util.regex.*; 

public class Solution { 

    static int soln=0; 
    static boolean start = true; 

    public static void main(String[] args) { 
     Scanner sn = new Scanner(System.in); 
     int n=sn.nextInt(); 
     System.out.println(multx(n)); 
    } 

    public static int multx(int n){ 
     if (start){ 
     soln = n; 
     start = false; 
     } 

     while(n>2) 
     { 
     n--; 
     soln = soln*n; 
     multx(n); 
     } 
     return soln; 
    } 
} 

Почему это выполнить return soln, а затем вернуться к multx(n)?

+1

Это называется рекурсия: https://en.wikipedia.org/wiki/Recursion – Andremoniy

+1

Я думаю, что вы не получаете рекурсии. http://stackoverflow.com/questions/8183426/factorial-using-recursion-in-java проверить этот ответ для вычисления recursin в java – Gatusko

ответ

1

Так рекурсия работает, она возвращается к multx (n) после того, как она возвращается из вызываемого метода. Подумайте о рекурсии как слоях и слоях того же кода, но этот код должен вернуться туда, где он был вызван в любое время, когда он заканчивается.

 Смежные вопросы

  • Нет связанных вопросов^_^