经典指数          
原因
8945
浏览数
0
收藏数
 

设有递归算法如下,
int x(int n)
{
 if(n<=3)
     return 1;
 else
     return x(n-2)+x(n-4)+1;
}
试问计算x(x(8))时需要计算()次x函数。
  • 8
  • 9
  • 16
  • 18

     举报   纠错  
 
切换
1 个答案

答案:B

先计算内部的x(8),x(8)=x(6)+x(4)+1;这里调用了3次

x(6)=x(4)+x(2)+1;这里又调用了两次(x(6)上面已经算了,这里不再计入次数)

x(4)=x(2)+x(0)+1;两次

x(2)直接得到结果,不需要再调用。

由于递归不记录已经计算过的结果,所以表达式x(6)+x(4)+1中的x(4)需要重新计算,需要 两次

3+2+2+2=9次

 
切换
撰写答案