首页 > 试题广场 >

程序的输出为( )

[单选题]
#include<bits/stdc++.h>
using namespace std;
int solve(int x){
if(x == 0 || x == 1){
return x;
}
if(x % 2 == 0){
return 1 + solve(x / 2);
}
else{
return 1 + solve((x + 1) / 2);
}
}
int main(){
int n = 100;
int ans = solve(n);
cout<<ans<<endl;
return 0;
}


程序的输出为(      )
  • 6
  • 7
  • 8
  • 9
递归实现100 对 2 的整除,
第一次调用solve()的结果为 1+solve(50);
第二次调用的结果为1 + solve(26);
第三次调用的结果为1 + solve(14);
第四次调用的结果为1 + solve(8);
第五次调用的结果为1 + solve(4);
第六次调用的结果为1 + solve(2);
第七次调用的结果为1 + solve(1);
第八次调用的结果为返回1;
然后逐层返回


发表于 2019-09-26 15:24:09 回复(0)