嵌入式C开发基础题(3)

发布时间:2014-10-22 14:26:28
来源:分享查询网

第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; } 这段代码对x和n完成什么样的功能(操作)? (a)x^n (x的n次幂)    (b)x*n(x与n的乘积)     (c) n^x(n的x次幂)    (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; }

返回顶部
查看电脑版