如何解决在R中以斐波那契序列打印用户给定值
我正在尝试使函数输出低于用户给定值(n)的斐波那契数列值。因此输入8将返回值(1、2、3、5、8)
Fib<- function(n){
v=NULL
v[1]<-1
v[2]<-1
for(i in 3:n){
v[i]<-v[i-1]+v[i-2]
while(v[i]<=n){
print(v)
break}}}
输入
fib(8)
[1] 1 1 2
[1] 1 1 2 3
[1] 1 1 2 3 5
[1] 1 1 2 3 5 8
我只想打印最后一个。
我也使用append(v,v[i])
进行了尝试,但没有成功,因此它只会返回小于n的值。
将不胜感激。
解决方法
您只能在不间断的情况下使用它:
Fib<- function(n){
v=NULL
v[1]<-1
v[2]<-1
i<-2
while(v[i]<=n)
{
i<-i+1
v[i]<-as.numeric(v[i-1])+as.numeric(v[i-2])
}
print(v[1:length(v)-1])
}
这是您想要的输出:
Fib(8)
[1] 1 1 2 3 5 8
,
您可以尝试一种递归方法(如果需要,可以修改此方法以将限制作为输入,但我更喜欢这种方式来节省堆栈空间):
from hwcounter import Timer,count,count_end
from time import sleep
from math import sqrt
start = count()
sqrt(144) / 12
elapsed = count_end() - start
print(f'elapsed cycles: {elapsed}')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。