嵌入式C開發基礎題(3)

3:考查遞歸調用

int foo ( int x , int n) 
{
	int val;
	val =1;
	if (n>0) 
	{
		if (n%2 == 1) val = val *x;
		val = val * foo(x*x , n/2);
	}
	return val;
}

這段代碼對xn完成什麼樣的功能(操作)?

(a)x^n (xn次冪)    (b)x*n(xn的乘積)     (c) n^x(nx次冪)    (d)以上均不是


解答:

如果僅僅是解答題目的話,比較簡單,就直接n=2,3,5替換一下,看結果如何;

//這個程序的非遞歸版本
int what ( int x , int n)
{
	int val;
	int product;
	product =1;
	val =x;
	while(n>0)
	{
		if (n%2 == 1) 
			product = product*val; /*如果是奇數次冪, x(val)
									 要先乘上一次,; 
									 偶數次冪,最後返回時纔會到這裏
									 乘以1*/
		val = val* val; 
		 n = n/2; 
	}
	return product;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章