第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

為什么 powersOf2(int n) 程序的控制臺輸出中打印 3 個值

為什么 powersOf2(int n) 程序的控制臺輸出中打印 3 個值

炎炎設(shè)計 2023-07-19 10:51:50
問題是當 n 為 4 時,它會打印 1、2 和 4package Example_16;public class Example {public static int powersOf2(int n) {    if (n < 1) {        return 0;    } else if (n == 1) {        System.out.println(1);        return 1;    } else {        int prev = powersOf2(n / 2);        int curr = prev * 2;        System.out.println(curr);        return curr;    }}public static void main(String[] args) {    powersOf2(4);} }我預計輸出只有 4 而不是 1 和 2,但是控制臺輸出顯示在下面,我不明白為什么會打印 1 和 2$javac Example_16/Example.java$java -Xmx128M -Xms16M Example_16/Example124
查看完整描述

2 回答

?
森欄

TA貢獻1810條經(jīng)驗 獲得超5個贊

當你第一次打電話時powersOf2(4),n == 4. 因此,您可以遵循else函數(shù)內(nèi)的分支:


int prev = powersOf2(n / 2);

int curr = prev * 2;

System.out.println(curr);

return curr;

這里發(fā)生的第一件事是powersOf2再次調(diào)用 2,然后是 1。在第三次調(diào)用時,n == 1返回并打印 1,如行 中所示System.out.println(1);。


但是,一旦該調(diào)用返回,您現(xiàn)在就處于上一個調(diào)用中,其中參數(shù)為 2。因此現(xiàn)在 prev = 1,因為它已返回。所以curr設(shè)置為 2,即prev * 2。然后您打印并返回curr。打印 2。返回時,將其乘以 2 并打印并再次返回,總共打印 3 次。


查看完整回答
反對 回復 2023-07-19
?
慕娘9325324

TA貢獻1783條經(jīng)驗 獲得超4個贊

您的代碼是一個遞歸程序。

第一次調(diào)用 powersOf2 方法(從 main 方法)n = 4 時,它會轉(zhuǎn)到 powersOf2 的其他部分,其中第二次調(diào)用 powersOf2。

在第二次調(diào)用 powersOf2 n =2 方法時,它再次轉(zhuǎn)到 powersOf2 的 else 部分,在那里進行第三次調(diào)用。

第三次調(diào)用 powersOf2 n = 1 方法時,它會轉(zhuǎn)到 else if 部分 (n == 1) 并在控制臺中打印 1。之后,它從第二次調(diào)用返回并打印 2(在 else 部分),之后它從第一次調(diào)用返回并打印 4(再次在 else 部分)。

所以你會打印出 1、2 和 4。


查看完整回答
反對 回復 2023-07-19
  • 2 回答
  • 0 關(guān)注
  • 218 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號