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

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

關于程序設計if的問題,具體情況如下所示~

關于程序設計if的問題,具體情況如下所示~

慕森王 2021-12-31 07:03:33
A.5B7C8D10原題如下:當N=5時,下列函數的返回值是:int foo(int n){if(n <= 2)return n:return foo(n-1)+f(n-2);}
查看完整描述

3 回答

?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

這是一個 類似于 斐波那契數列 的數列
當 n <= 2 時,foo(n) = n
當 n > 2 時,foo(n) = foo(n - 1) + foo(n - 2)
所以:
foo(1) = 1;
foo(2) = 2;;
foo(3) = foo(2) + foo(1) = 3;
foo(4) = foo(3) + foo(2) = 5;
foo(5) = foo(4) + foo(3) = 8;
后面的以此類推

 


查看完整回答
反對 回復 2022-01-04
?
GCT1015

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

這個答案是選C的。
遞歸都是完全可以轉化為數學里面的數列來做的,他們都是有一定規律的。
你仔細看看,就會發現foo(n)= foo(n-1)+f(n-2)。
而當n=1的時候,foo(1)=1
當n=2的時候,foo(2)=2
所以很容易就推出:
foo(3)=foo(2)+foo(1)=2+1=3
foo(4)=foo(3)+foo(2)=3+2=5
foo(5)=foo(4)+foo(3)=5+3=8
所以答案選擇C。


查看完整回答
反對 回復 2022-01-04
?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

說下我的理解吧

首先這個題目最下面 return foo(n-1)+f(n-2);  后面的這個f()方法應該是印錯了;

正確的題目應為:當n=5時,下列函數的返回值是:

int foo(int n){

if(n <= 2)

return n:

return foo(n-1)+foo(n-2);

}

先說下 這個foo()方法大致的意思吧:

傳入初始數據 n=5;

往下走 判斷 n是否大于等于2 ;

結果5大于等于2 跳出 if方法;

繼續走下面的方法 foo(5-1)+foo(5-2);  

得出 foo(4)+foo(3);

那我們怎么知道 方法foo(4)+foo(3)等于多少呢?

那就繼續把參數傳進方法計算出結果看看不就知道了嗎?!

先計算 foo(3) :

傳入初始數據 n=3;

往下走 判斷 n是否大于等于2 ;

結果3大于等于2 跳出 if方法;

得出 foo(2)+foo(1);

那么還是沒計算出結果! 繼續!

計算 foo(2):

傳入初始數據 n=2;

往下走 判斷 n是否大于等于2 ;

結果2等于2 執行  if方法;

得出 foo(2) 的 結果為 2;

可以得出 :

當 n <= 2 時,foo(n) = n

當 n > 2 時,重新執行方法foo(n) = foo(n - 1) + foo(n - 2)

foo(3)=foo(2) + foo(1)= 3;

foo(4)= foo(3) + foo(2)= 5;

foo(5)= foo(4)+  foo(3)= 8;



查看完整回答
反對 回復 2022-01-04
  • 3 回答
  • 0 關注
  • 209 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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