设计递归算法x(x(8))需要调用几次函数x(int n)?求详细~

这是一个面试题,解析说x(x(8))的值为9,没看懂,求详细~

这个题我觉得主要还得看x()里的递归语句那里怎么写,假如递归调用那里每次是n-1,并且n=1的时候停止递归(有返回值),那么:

x(x(8)) -->x(x(7)) -->x(x(6)) -->x(x(5)) -->x(x(4)) -->x(x(3)) -->x(x(2)) -->x(x(1)) -->到x(1)的时候返回一个确定的值,假如返回了1,那么加上外层的x(1),调用了x(int n)9次,如果递归条件或停止递归的条件变了,调用次数也会变化;。追问

那么调用了 几次x函数呢?
书上说用 二叉树

追答

程序执行的栈轨迹是x(x(8)),会先执行x(8),因为函数是递归的那么会执行x(7)-------->x(1),到这里执行了8次,然后剩下最底层的x(x(8)),此时x(8)已经得到了返回值,如果是1,那么剩下就执行一次x(1),一共9次;

追问

x(8)理解为二叉树,树的节点就是调用次数,结果为18
|
没有理解

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-27
x(int n)的函数体是什么
x(x(8))你知道它是什么意思吗
它表示x(8)为实参时求x(int n)的值