这个函数调用的次数为啥是32次,看不太懂,求解答

#include

using namespace std;

int f(int i,int k)

{

 if(k==0)return 1;

 else if(k==1)return i;

 else return f(i,k/2)*f(i,k-k/2);

}

int main( )

{
cout<<f(2,5)<<'\n';

 return 0;

img

递归实现 刚才看错了,现在重发
else return f(i,k/2)*f(i,k-k/2);
直到k=1或k=0之前 会执行这一句
当 i=2,k=5时
//主要先不看i,主要看k
return f(2,2)*f(2,3)
而f(2,2) 传参相当于i=2,k=2
return f(2,1)*f(2,1)
f(2,3)传参相当于i=2,k=3
return f(2,1)*f(2,2)
此处还有一个f(2,2)
再来一次
f(2,2)传参相当于i=2,k=2
return f(2,1)*f(2,2)
return f(2,1)*f(2,1)
此时k=1
返回i的值 return i;
再来说i
i在这几次返回后,i * 2 * 2 * 2 * 2=32
所以输出的值为32
32并非函数调用次数,而是i的值
望采纳!!

应该是调用了9次,输出的是32

img