我有一个带有while循环的函数,该函数为每个循环返回不同的值。如何在一个向量中显示不同的值?现在我有该功能,它还可以,但是对于我的练习,我需要vector中的值,而我却无法弄清楚。
我已经尝试使用
print(paste("Lösungsvektor:", b))
但是我不知道如何在函数中实现矢量。
Collatz <- function(n) {
while (n != 1) {
print(n)
if(n %% 2 == 0){
n <- n/2
}else{
n <- n*3+1
}
}
print(1)
}
Collatz(22)
答案 0 :(得分:2)
首先,您的函数实际上不返回任何内容,仅返回打印内容,因此我们需要对其进行修复。它返回的是一个向量,应该在while循环进行时进行构建。这是一个选择:
Collatz <- function(n) {
j<-2
output<-n
while (n != 1) {
if(n %% 2 == 0){
n <- n/2
}else{
n <- n*3+1
}
output[j]<-n
j<-j+1
}
output
}
Collatz(22)
[1] 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1