C ++编写一个名为display的函数

时间:2018-11-26 18:35:17

标签: c++

我有这个问题。 编写一个名为display的函数。该函数的整数参数为正。它打印一个 带有水平条的图表,从顶部的第一个数字开始显示参数的数字。每个酒吧 应显示从1到显示数字的数字。如果参数不是正数,则函数 不应该打印任何东西。使用超过10行代码的冗长解决方案可能会失去分数。 例如,下面是使用该功能的程序。

我想使函数递归。我在这里做什么错了?

#include <iostream>

int display(int x) {
    if (x<=0) return 0;
    if (x<10) {
        for (int i =1; i<=x; i++) {
            std::cout << i;
        }
        std::cout << std::endl;
    }
    else
        return display(x/10)+x%10;
    std::cout << std::endl;
}

int main() {
    display(31415);
    return 0;
}

这应该产生以下输出:

123
1
1234
1
12345

但它只会显示

123

1 个答案:

答案 0 :(得分:0)

您的显示函数将以31415、3141、314、31递归地调用,最后是3,然后您的for循环就会执行

for (int i =1; i<=x /*3*/; i++) {
    std::cout << i;
}

然后将打印123。