亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么這個while循環永遠不會終止?

為什么這個while循環永遠不會終止?

哈士奇WWW 2022-10-07 17:32:37
我真的堅持理解這一概念。我的一次考試中有一個 while 循環,即使我知道打印的是什么,我也不知道為什么。這是代碼:class Test {    public static void xMethod(int length) {        while (length > 1){            System.out.print((length - 1) + " ");            xMethod(length-1);        }    }    public static void main(String[] args){        xMethod(5);    }}
查看完整描述

5 回答

?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

因為length永遠不會更新。


while (length > 1){

   System.out.print((length - 1) + " ");

   xMethod(length - 1);

   length--;

}


查看完整回答
反對 回復 2022-10-07
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

正如另一個答案所指出的那樣,您需要減少length變量以解決您當前的問題length = length - 1or length--。(我讓我的“同事”回答更好地解釋它)。


我的回答主要是關于你對遞歸方法的使用。


你可能想要的是一個簡單的if條件。遞歸將充當循環。


public static void xMethod(int length) {

    length--;

    System.out.print((length) + " ");

    if (length > 1){

        xMethod(length);

    }

}

xMethod(5) > 4 3 2 1


public static void xMethod(int length) {

    length--;

    if (length > 1){

        xMethod(length);

    }

    System.out.print((length) + " ");

}

xMethod(5) > 1 2 3 4


查看完整回答
反對 回復 2022-10-07
?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

長度完全沒有變化


class Test {

public static void xMethod(int length) {

    while (length > 1){

        System.out.print((length - 1) + " ");

        xMethod(length-1);

        //need to change the length here

    }

}


public static void main(String[] args){

    xMethod(5);

}


查看完整回答
反對 回復 2022-10-07
?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

這里要補充的重要一點是了解分配在 Java 中是如何工作的。

的值length沒有改變,因為當您在方法中傳遞一個值并且它進入while循環時,當條件停止而不是xMethod(length-1);您使用的遞歸時循環停止。這就是為什么即使您添加length--它也不會打印您想要的內容。

因此,要使程序正常運行,您必須

  1. length變量賦值

  2. 更改或刪除遞歸。

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html

一旦你瀏覽了這個鏈接,你就會明白為什么價值沒有改變。

注意:從鏈接中您知道length--等于length = length -1,所以基本上我們必須將更新后的值分配給length變量。


查看完整回答
反對 回復 2022-10-07
?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

長度始終具有值 5。您應該將 length-1 替換為 length--。


class Test {

    public static void xMethod(int length) {

        while (length > 1){

            System.out.print((length--) + " ");

            xMethod(length);

        }

    }


    public static void main(String[] args){

        xMethod(5);

    }

}


查看完整回答
反對 回復 2022-10-07
  • 5 回答
  • 0 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號