r - 我正在尝试在 R 中创建一个带有 while 循环的 Collatz 序列。我在这个 while 循环中做错了什么?
问题描述
我正在尝试在 R 中使用 while 循环创建一个 Collatz 序列。
vector <- NULL
n <- 10
while (n != 1) {
if (n %% 2 == 0) {
n <- n / 2
} else {
n <- (n * 3) + 1
}
vector <- c(vector, cbind(n))
print(vector)
}
运行代码后,我得到:
[1] 5
[1] 5 16
[1] 5 16 8
[1] 5 16 8 4
[1] 5 16 8 4 2
[1] 5 16 8 4 2 1
我该怎么做才能只显示最后一行?我的代码出了什么问题?感谢您对此的任何帮助。
解决方案
你有几种处理方式print(vector)
- 在 之前添加
if
条件print(vector)
,即
vector <- NULL
n <- 10
while (n != 1) {
if (n %% 2 == 0) {
n <- n / 2
} else {
n <- (n * 3) + 1
}
vector <- c(vector, cbind(n))
if (n==1) print(vector)
}
- 将其移到
while
循环外,即
vector <- NULL
n <- 10
while (n != 1) {
if (n %% 2 == 0) {
n <- n / 2
} else {
n <- (n * 3) + 1
}
vector <- c(vector, cbind(n))
}
print(vector)
推荐阅读
- postgresql - Docker 连接到具有特定主机地址的 postgres
- javascript - 使用 For Loop 而不是 forEach 时出现意外结果
- flutter - Navigator:回调永远不会被触发
- ios - SwiftUI 选择器在 ObservedObject 公共变量更新期间滚动时跳转
- python - (discord.py) 如何在 DM 中显示机器人输入指示器
- bing-ads-api - Bing Ads API 快速入门:仅供 Microsoft 帐户用户使用。请使用 /consumers 端点来处理此请求
- arrays - 在 Python 中创建黑色 RGBA 图像
- python - WINDROSE 和同一图中的图形
- c++ - G ++编译器:无法写入文件
- python - Python pip 无法安装约束模块