c 語(yǔ)言 函數(shù)
# 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)程序第一次的輸出結(jié)果是( ? )。
(A) 8 ? ? ? ? (B) 0 (C) 64 (D) 4
(2)程序第二次的輸出結(jié)果是( ? )。
(A) 8 ? (B) 0 (C) 64 (D) 4
要具體步奏,,我看不懂這個(gè)。。。求解
2015-12-07
第一次是8,第二次是64;第一次循環(huán)m先是等于4然后return(f(m-2));之后m == 2 ;n == 4;再進(jìn)if(m){ n*=m return(f(m-2));} m == 0;n == 8;再繼續(xù)這時(shí)候m == 0不滿足if(m)//這里的意思就是m == 0;所以執(zhí)行else return(n); 所以返回n == 8;("="賦值運(yùn)算符,"=="等于)。
第二次循環(huán)也是一樣的,只不過(guò)這時(shí)的 n == 8;m == 4之后運(yùn)算都和前一個(gè)循環(huán)一樣
2015-12-07
第一次是8,第二次是64.首先,第一次循環(huán)m=4 ,然后進(jìn)入F方法運(yùn)算此時(shí)N的值為4, m=4 然后返回再次執(zhí)行f方法(但是M變成2),,然后 N * = m=8.然后M-2在此執(zhí)行F方法(此時(shí)M=0)故此執(zhí)行else下面的語(yǔ)句返回N的值8.第二次循環(huán)參考上述。每次循環(huán)f遞歸三次