#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;
递归实现 刚才看错了,现在重发
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