【问题标题】:Printing Triangle star(*) pattern in javascript using Recursion [duplicate]使用递归在javascript中打印三角星(*)模式[重复]
【发布时间】:2022-11-25 13:27:19
【问题描述】:

我一直在尝试使用递归解决 Javascript 中打印左侧星号 (*) 模式的问题,我认为我的逻辑是正确的,但我的语法和概念可能是错误的

// * * * * *
// * * * *
// * * *
// * *
// *

到目前为止,这是我的代码解决方案

var triangle = function (row, col) {
    if(row == 0){
        return
    }
    if(col < row){
        console.log("*")
        triangle(row, col + 1)
    }else{
        console.log("\n")
        triangle(row - 1, 0)
    }
}
triangle(4, 0)

输出

*
*
*
*


*
*
*


*
*


*

但我希望输出是

* * * * *
* * * *
* * *
* *
*

【问题讨论】:

标签: javascript algorithm recursion design-patterns


【解决方案1】:

console.log() 自动关闭输出流,“换行符”是因为它是下一个输出会话。如果您使用document.write,您将看到它的真实形式。

var triangle = function (row, col) {
    if(row == 0){
        return
    }
    if(col < row){
        document.write("*")
        triangle(row, col + 1)
    }else{
        document.write("<br/>")
        triangle(row - 1, 0)
    }
}
triangle(4, 0)

但如果你坚持使用console.log(),则必须进行一些修改:

var triangle = function (row, col, stream = '') {
    if(row == 0){
        return
    }
    if(col < row){
        stream += '*'
        triangle(row, col + 1, stream)
    }else{
        console.log(stream)
        stream = ''
        triangle(row - 1, 0, stream)
    }
}
triangle(4, 0)

【讨论】:

    【解决方案2】:

    检查这个解决方案

     function triangle(row){
            var print="";
            if(row==0){
                return;
            }
            for(var i=0;i<row;i++){
                print+="* "
            }
            console.log(print);
            triangle(row-1);
            
        }
        triangle(5);

    【讨论】:

      猜你喜欢
      • 2016-02-05
      • 2020-08-14
      • 2023-01-20
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多