首页 > 试题广场 >

程序的输出为( )

[单选题]
#include <iostream>
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

正常的递归

发表于 2019-09-09 23:28:01 回复(0)
1 + solve(50)
       1 + solve(25)
              1 + solve(13)
                      1 + solve(7)
                            1 + solve(4)
                                   1 + solve(2)
                                          1 + solve(1)
                                                    1

笨人总有笨办法,哈哈哈
      
发表于 2020-06-16 21:09:46 回复(2)
小白求问。为什么这个函数要一直重复计算下去,而且最后答案是循环几次而不是他的值
发表于 2021-04-24 11:11:46 回复(3)
硬做还是很快做的出来的。。。。
发表于 2020-02-11 16:27:46 回复(0)