如何在Swift中打印Pascal三角形

本文概述

在数学中, 帕斯卡的三角形是数字的三角形排列, 它给出任何二项式表达式(例如(x + y)n)的展开式的系数。它以17世纪法国数学家Blaise Pascal的名字命名。对于那些不熟悉二项式表达式的人来说, 一个更简单的解释是, 帕斯卡三角形是一个永无休止的数字等边三角形, 遵循将上面两个数字相加得到下面数字的规则。

在本文中, 我们将向你展示如何使用Swift编程语言在控制台中生成这个著名的三角形。

直接在控制台中打印

图形上, 如上所述, 建立帕斯卡三角形的方法非常简单, 要得到下面的数字, 你需要在上面加上两个数字, 依此类推:

帕斯卡三角形图形表示

以下代码将生成帕斯卡的三角形:

// Function that generates the pascals triangle with a specific number of rows
func generatePascalTriangle(numRows: Int){
    var results = [[Int]]()
    
    if (numRows == 0) {
        return
    }

    for i in 0..<numRows {
        var currentResults = [Int]()

        // Print spaces
        for _ in 0..<(numRows - i - 1) {
            print(" ", terminator:"")
        }

        // Print values
        for j in 0...i {
            if (i > 1 && j > 0 && j < i) {
                let value = results[i-1][j] + results[i-1][j-1]
                currentResults.append(value)

                print("\(value) ", terminator: "")
            } else {
                currentResults.append(1)
                print("\(1) ", terminator: "")
            }
        }
        
        results.append(currentResults)
        print("\n")
    }
}

// Prompt the user for the number of rows through the console e.g "10"
print("Insert the number of rows for the triangle:")
let numberOfRows:Int? = Int(readLine()!)

// Print the pascals triangle in the console with the given number of rows
generatePascalTriangle(numRows: numberOfRows!)
// Or force the value directly:
// generatePascalTriangle(numRows: 10)

前面代码的执行将在控制台中生成以下输出:

迅捷输出Pascal的三角形

检索数组中的三角形数据

如果不是在控制台中仅打印三角形, 而是可以检索逻辑生成的数据并在以后以其他方式呈现它:

// Function that generates the pascals triangle with a specific number of rows
func generate(numRows: Int) -> [[Int]] {
    var results = [[Int]]()
    
    if (numRows == 0) {
        return results
    }

    for i in 0..<numRows {
        var currentResults = [Int]()
        
        for j in 0...i {
            if (i > 1 && j > 0 && j < i) {
                let value = results[i-1][j] + results[i-1][j-1]
                currentResults.append(value)
            } else {
                currentResults.append(1)
            }
        }

        results.append(currentResults)
    }
    
    return results
}

let triangleContent = generate(numRows: 10)

print(triangleContent)

先前的代码将生成以下输出:

Swift Pascals三角数据

请记住, 你可以遍历函数的结果, 例如:

let triangleContent = generate(numRows: 10)

for i in 0..<triangleContent.count {
    let row = triangleContent[i]
    
    for i in 0..<row.count {
        let value = row[i]
        print("\(value) ", terminator:"")
    }

    print("\n")
}

上一个代码片段将生成以下输出:

迅捷输出Pascal的三角形

编码愉快!

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?