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
要具體步奏,,我看不懂這個。。。求解
2015-12-07
第一次是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之后運算都和前一個循環一樣
2015-12-07
第一次是8,第二次是64.首先,第一次循環m=4 ,然后進入F方法運算此時N的值為4, m=4 然后返回再次執行f方法(但是M變成2),,然后 N * = m=8.然后M-2在此執行F方法(此時M=0)故此執行else下面的語句返回N的值8.第二次循環參考上述。每次循環f遞歸三次