发布于 2026-01-06 5 阅读
0

使用 JS、Python 和 Java 学习算法 9:打印步骤 1:迭代解法 2:递归解法

使用 JS、Python 和 Java 学习算法 9:打印步骤

1:迭代解法

2:递归解法

本系列文章以Stephen Grider在Udemy上的课程为基础,涵盖三种不同的编程语言。JavaScript的解决方案由Stephen提供,我尝试将其“翻译”成Python和Java。

今天的问题旨在引出递归的概念。

--- 说明:
编写一个函数,该函数接受一个正数 N 作为参数。
该函数应在控制台输出一个阶跃曲线
,阶跃曲线的起始位置使用 # 字符。请确保阶跃
曲线的右侧有空格!
--- 示例:
steps(2)
'# '
'##'
steps(3)
'# '
'## '
'###'
steps(4)
'# '
'## '
'### '
'####'

1:迭代解法

JavaScript:

function steps(n) {
    for (let row = 0; row < n; row++) {
        let stair = '';
        for (let column = 0; column < n; column++) {
            if (column <= row) {
                stair += '#';
            } else {
                stair += ' ';
            }
        }
        console.log(stair);
    }
}

Python:

def steps(n):
    for row in range(n):
        stair = ''
        for column in range(n):
            if column <= row:
                stair += '#'
            else:
                stair += ' '
        print(stair)

Java:

static void steps(int n) {
    for (int row = 0; row < n; row++) {
        StringBuilder stair = new StringBuilder();
        for (int column = 0; column < n; column++) {
            if (column <= row) {
                stair.append("#");
            } else {
                stair.append(" ");
            }
        }
        System.out.println(stair);
    }
}

2:递归解法

JavaScript:

function steps(n, row = 0, stair = '') {
    if (n === row) {
        return;
    }

    if (n === stair.length) {
        console.log(stair);
        return steps(n, row + 1);
    }

    stair += stair.length <= row ? '#' : ' ';
    steps(n, row, stair);
}

Python:

def steps(n, row=0, stair=''):
    if n == row:
        return

    if n == len(stair):
        print(stair)
        return steps(n, row+1)

    stair += '#' if len(stair) <= row else ' '
    steps(n, row, stair)

Java:

static void steps(int n) {
    steps(n, 0, new StringBuilder());
}

static void steps(int n, int row, StringBuilder stair) {
    if (n == row) {
        return;
    }

    if (n == stair.length()) {
        System.out.println(stair);
        steps(n, row + 1, new StringBuilder());
        return;
    }

    stair.append(stair.length() <= row ? "#" : " ");
    steps(n, row, stair);
}
文章来源:https://dev.to/tommy3/learning-algorithms-with-js-python-and-java-9-printing-steps-2i05