java - if与while的区别?
PHPz
PHPz 2017-04-18 10:51:48
0
3
643

在《剑指offer》的面试题5:“从尾到头打印链表”,在使用递归时,为什么不能用while来代替if?

    public static void printListReverse_recursively(listNode headNode){
        if(headNode!=null)
        {
            if(headNode.next!=null)
            {
                printListReverse_recursively(headNode.next);
            }
            System.out.println(headNode.data);
            
        }
    }
PHPz
PHPz

学习是最好的投资!

répondre à tous(3)
洪涛

Certainement pas - vous pouvez écrire vous-même une petite démo et vous saurez si vous l'essayez. Peu importe lequel if est remplacé par while, cela mènera à une boucle infinie - car si la longueur du lien est longue. list n'est pas 0, alors il doit y avoir headNode mais pas null, alors si le premier if est while, alors il y aura une boucle infinie si la longueur de la liste chaînée est ; supérieur à 1, alors il doit y avoir headNode.next n'est pas null, alors si le deuxième if est while, cela provoquera une boucle infinie.

迷茫

if est un jugement conditionnel, while est une structure en boucle. L’un ne sera exécuté qu’une seule fois et l’autre sera exécuté plusieurs fois jusqu’à ce que la condition soit fausse.

PHPzhong

La récursion est que la différence entre if et while est que if ne sera jugé qu'une seule fois, que le code soit exécuté ou non, if ne reviendra pas pour juger à nouveau (certaines personnes disent "ne regarderont jamais en arrière").
Si l'expression while est vraie, elle regardera en arrière et jugera plusieurs fois (reviendra en arrière et jugera à nouveau) jusqu'à ce que la condition ne soit pas remplie.

Supposons que les valeurs de la liste chaînée soient 1, 2, 3, 4 ; si vous utilisez if, 1, 2, 3, 4 sera affiché en sortie normale.
Lors de l'utilisation de while, le premier 1 n'est pas vide, ce qui fait que la première condition while (headNode.next!=null) est toujours vraie, ce qui créera une boucle infinie.
Si ce que j'ai dit est correct, j'espère qu'il sera adopté, merci !

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