为什么Java里会执行递归后面的语句
巴扎黑
巴扎黑 2017-04-17 17:47:43
0
8
391

代码为:

public static void main(String[] args) {
    // TODO Auto-generated method stub
    score();
}

public static void score(){
    System.out.println("请输入一个5分制成绩");
    Scanner in = new Scanner(System.in);
    int score = in.nextInt();
    if(score>=0&&score<=5){
        switch(score){
        case 5:System.out.println("优秀");
        break;
        case 4:System.out.println("良好");
        break;
        case 3:System.out.println("及格");
        break;
        default:System.out.println("不及格");
        break;
        }
    }
    else{
        score();
    }
    System.out.println("over");
}

执行效果为

为什么递归后会执行后面的输出语句,而且是在最后一次一起执行,不是每次递归前输出

巴扎黑
巴扎黑

répondre à tous(8)
大家讲道理

Évidemment, votre logique ne doit pas être récursive score, mais un contrôle de boucle en main.
PS : La récursivité convient à une utilisation dans certaines logiques évidemment faciles à lire après utilisation, comme la séquence de Fibonacci. La récursivité doit parfois être transformée en boucle, car lorsque le niveau de récursivité est profond, ses performances sont très mauvaises et exponentiellement pires.

伊谢尔伦

Pour comprendre la récursivité, le meilleur moyen est de procéder au débogage en une seule étape, tout sera clair

巴扎黑

La récursivité, la récursivité, bien sûr, exécute l'intégralité du corps de la fonction à chaque fois,

刘奇

Étant donné que votre code de sortie se trouve après l'appel récursif, il est affiché ensemble en dernier. Lorsque la récursion la plus interne atteint la dernière phrase, elle retourne à la couche externe, continue d'exécuter l'instruction après l'appel récursif, c'est-à-dire l'instruction de sortie de la couche externe, puis retourne à la couche externe jusqu'à la couche la plus externe.

黄舟

Parce que vous avez entré 3 à la fin, vous avez laissé le if au lieu du else. Après la sortie du if, over était imprimé, puis à chaque fois que la boucle récursive sortait, over était imprimé

阿神

Parce que le voyage n'est pas encore terminé et doit continuer

小葫芦

En raison de la récursivité, la magie de la récursion n'est pas seulement qu'elle s'appelle à chaque fois, mais la chose la plus étonnante est qu'après l'exécution de la dernière récursion, elle reviendra vers le haut couche par couche, donc la sortie sera sortie à la fin, et il ne génère pas de message à chaque fois qu'il est appelé.

Peter_Zhu

Pensez d'abord à la dernière exécution, puis avancez

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal