📜  门| GATE-CS-2004 |第 59 题(1)

📅  最后修改于: 2023-12-03 15:12:40.751000             🧑  作者: Mango

题目描述

如下是一个函数 foo() 的实现,请问该函数的输出结果是什么?

void foo(int n) {
    if (n > 1) {
        foo(n/2);
        foo(n/2);
    }
    cout << "*" << endl;
}

题目分析

可以发现 foo() 函数的递归调用中,每次都将 n 除以 2,直到 n=1 时,进行一次输出。因此,该函数相当于将 n 不断二分,直到 n=1 时,输出单个星号 *

答案

当输入参数为 6 时,函数 foo() 的输出结果为:

*
*
*

输出的三个星号 * 表示在将 6 不断二分成 3、1 两个数的同时,共进行了三次输出。

参考资料