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

為了賬號安全,請及時綁定郵箱和手機立即綁定

c 語言 函數

# include <stdio.h>

int f(int m)

{

? static int n=1;

? m/=2;

? m=m*2;

? if(m)

? { n*=m;

? ? return(f(m-2));

? }

? else return(n);

}

void main()

{

? int a,i,j;

? for(i=0;i<2;i++)

? {

? ? a=f(4+i);

? ? printf("%d\n",a);

? }

}

(1)程序第一次的輸出結果是( ? )。

(A) 8 ? ? ? ? (B) 0 (C) 64 (D) 4

(2)程序第二次的輸出結果是( ? )。

(A) 8 ? (B) 0 (C) 64 (D) 4

要具體步奏,,我看不懂這個。。。求解

正在回答

2 回答

第一次是8,第二次是64;第一次循環m先是等于4然后return(f(m-2));之后m == 2 ;n == 4;再進if(m){ n*=m return(f(m-2));} m == 0;n == 8;再繼續這時候m == 0不滿足if(m)//這里的意思就是m == 0;所以執行else return(n); 所以返回n == 8;("="賦值運算符,"=="等于)。

第二次循環也是一樣的,只不過這時的 n == 8;m == 4之后運算都和前一個循環一樣


1 回復 有任何疑惑可以回復我~
#1

惺惺惜 提問者

非常感謝!
2015-12-08 回復 有任何疑惑可以回復我~
#2

loser_by 回復 惺惺惜 提問者

我也是個初學者,希望能多多指教!
2015-12-11 回復 有任何疑惑可以回復我~

第一次是8,第二次是64.首先,第一次循環m=4 ,然后進入F方法運算此時N的值為4, m=4 然后返回再次執行f方法(但是M變成2),,然后 N * = m=8.然后M-2在此執行F方法(此時M=0)故此執行else下面的語句返回N的值8.第二次循環參考上述。每次循環f遞歸三次

1 回復 有任何疑惑可以回復我~
#1

loser_by

第二次循環,n的值仍然為8,但是M值由于失幀所以為2
2015-12-07 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
C語言入門
  • 參與學習       926904    人
  • 解答問題       21533    個

C語言入門視頻教程,帶你進入編程世界的必修課-C語言

進入課程

c 語言 函數

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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