使用递归函数打印斐波那契数列的 R 程序


2022 年 5 月 9 日, Learn eTutorial
2684

什么是斐波那契数列?

斐波那契数列是一个从 0, 1, 1, 2, 3 等开始的数字序列或数列。在斐波那契数列中,我们手动将前两个数字设为 0 和 1。斐波那契数列的其余部分通过计算前两个数字之和来获得,例如斐波那契数列的第三个数字将是 0+1=1,依此类推。

因此,通常我们可以将斐波那契数列的第 n 项定义为使用查找 **(n-1)th** 和 **(n-2)th** 数字的 **和** 的公式计算。

如何在 R 程序中使用递归函数实现斐波那契数列?

我们使用 readline() 函数获取用户输入。下面是在 R 程序中使用递归函数打印斐波那契数列的步骤。在此 R 程序中,我们通过向用户提供适当的消息(使用“prompt”)将用户输入接受到变量 terms 中。

函数 fibonacci() 用于计算斐波那契数列的第 n 项。for 循环用于迭代并递归计算每一项。

了解有关如何不使用递归函数查找斐波那契数列的更多信息。

算法

步骤 1:向用户提示适当的消息

步骤 2:使用 readline() 将用户输入存入变量 total_terms

步骤 4:检查 **total_terms > 0** 以验证变量 total_terms 是否有效,如果无效则重新输入值

步骤 5:如果 **total_terms > 0**,则使用 for 循环调用函数 fibonacci() total_terms 次以计算第 n 项。并打印从函数 fibonacci() 返回的值

函数 fibonacci(n)

步骤 1:如果 **n <= 1** 则返回 n,否则转到步骤 2

步骤 2:返回 fibonacci(n-1) + fibonacci(n-2),递归调用函数

 

R 源代码

                                          # Function fibonacci

fibonacci <- function(n) {
    if(n <= 1) {
        return(n)
    } else {
        return(fibonacci(n-1) + fibonacci(n-2))
    }
}

# take input from the user
total_terms = as.integer(readline(prompt="How many terms? "))

# check if the total_terms is valid or not
if(total_terms<= 0) {
    print("Plese enter a positive integer")
} else {
    print("Fibonacci sequence:")
    for(i in 0:(total_terms-1)) {
        print(fibonacci(i))
    }
}
                                      

输出

How many terms? 10
[1] "Fibonacci sequence:"
[1] 0
[1] 1
[1] 1
[1] 2
[1] 3
[1] 5
[1] 8
[1] 13
[1] 21
[1] 34