面试题,关于递归的,该怎么解决
面试题,关于递归的
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) 以上均不是
------解决方案--------------------
选(a) x^n (x的n次幂)
------解决方案--------------------
A is right
------解决方案--------------------
A 。。。。。。。。。。
------解决方案--------------------
选A吧。。。。。
------解决方案--------------------
选择:(a) x^n (x的n次幂)
举两个数字想着跑一遍就行了
------解决方案--------------------
选a,举个简单的数,在心里跑一遍就出来了
------解决方案--------------------
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出
------解决方案--------------------
foo(x*x , n/2);比这里x*x来看,应该可以猜测出是a,
面试题的话,用2,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) 以上均不是
------解决方案--------------------
选(a) x^n (x的n次幂)
------解决方案--------------------
A is right
------解决方案--------------------
A 。。。。。。。。。。
------解决方案--------------------
选A吧。。。。。
------解决方案--------------------
选择:(a) x^n (x的n次幂)
举两个数字想着跑一遍就行了
------解决方案--------------------
选a,举个简单的数,在心里跑一遍就出来了
------解决方案--------------------
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出
------解决方案--------------------
foo(x*x , n/2);比这里x*x来看,应该可以猜测出是a,
面试题的话,用2,3这样的数字代入验证下。