楼主: 关小点
9297 12

[有偿编程] 求编写一个简单的R程序 [推广有奖]

  • 1关注
  • 0粉丝

已卖:17份资源

硕士生

20%

还不是VIP/贵宾

-

威望
0
论坛币
2451 个
通用积分
0.5500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
3850 点
帖子
53
精华
0
在线时间
206 小时
注册时间
2009-9-6
最后登录
2023-4-4

楼主
关小点 在职认证  发表于 2017-3-20 13:02:24 |AI写论文
5论坛币
编写一个R程序(函数)。输入一个整数n,如果n<=0,则中止运算,并输出一句话:“要求输入一个正整数”;否则,如果n是偶数,则将n除2,并赋给n;否则,将3n+1赋给n。不断循环,直到n=1,才停止计算,并输出一句话:“运算成功”。

最佳答案

小朝 查看完整内容

你的代码给你调通了,你对比一下看哪出了问题。
关键词:R程序 正整数 程序

沙发
小朝 发表于 2017-3-20 13:02:25
关小点 发表于 2017-3-21 14:14
这个程序问题出在哪?

> f repeat {
你的代码给你调通了,你对比一下看哪出了问题。
  1. f <- function(n){
  2.   if(n <= 0){
  3.     list("要求输入一个正整数")
  4.   } else{
  5.     repeat{
  6.       if(n==1) {break}
  7.       else if(n/2==as.integer(n/2)){n <- n/2}
  8.       else {n <- 3*n+1}
  9.     }
  10.     list('运算成功')
  11.   }
  12. }
复制代码

藤椅
juxuny 发表于 2017-3-20 14:58:22
  1. f = function(n) {
  2.   while(n != 1) {
  3.     t = bitwAnd(n, 1)
  4.     if (t == 0) {
  5.       n = bitwShiftR(n ,1)
  6.     } else {
  7.       n = 3 * n + 1
  8.     }
  9.   }
  10.   print("运算结束")
  11. }

  12. s = readline()
  13. n = as.integer(s)
  14. if (n <= 0) {
  15.   print("要求输入一个正整数")
  16. } else {
  17.   f(n)
  18. }
复制代码
感觉这就是作业

板凳
johnmy 发表于 2017-3-20 21:10:24
bitwAnd这类函数是干什么用的?

报纸
关小点 在职认证  发表于 2017-3-21 08:48:31
juxuny 发表于 2017-3-20 14:58
感觉这就是作业
bitwAnd和 bitwShiftR 是什么意思

地板
小朝 发表于 2017-3-21 10:20:09
关小点 发表于 2017-3-21 08:48
bitwAnd和 bitwShiftR 是什么意思
按位操作函数,用到二进制
bitwAnd(n,1) 判断此数据的二进制末尾是否为1,若为1,说明是奇数;
例如7,二进制是111,若末尾是1,则为奇数。
bitwShiftR(n,1) 往右移动1位
例如7,二进制111,往右移动1位,变成11,即最后一位去掉,变成3。

7
关小点 在职认证  发表于 2017-3-21 14:14:32
这个程序问题出在哪?

> f<-function(n){
+ if (n<=0) list(”要求输入一个正整数”)
> else {
Error: unexpected 'else' in "else"
> repeat {
+ if (n==1) break
+ else if (n/2==as.integer(n/2) )
+ n<-n/2
+ else
+ n<-3*n+1
+ }
Error: object 'n' not found
> list(“运算成功”)
> }
Error: unexpected '}' in "}"
> f(55)
Error: could not find function "f"
> }
Error: unexpected '}' in "}"
>

8
johnmy 发表于 2017-3-21 17:28:44
小朝 发表于 2017-3-21 10:20
按位操作函数,用到二进制
bitwAnd(n,1) 判断此数据的二进制末尾是否为1,若为1,说明是奇数;
例如7, ...
谢谢。在网上搜时看这个函数用得也不多,找不到资料。

9
关小点 在职认证  发表于 2017-3-22 10:22:16
小朝 发表于 2017-3-21 10:20
按位操作函数,用到二进制
bitwAnd(n,1) 判断此数据的二进制末尾是否为1,若为1,说明是奇数;
例如7, ...
能否帮忙解答一下 程序问题出在哪的那个问题  谢谢

10
juxuny 发表于 2017-3-22 11:20:51
johnmy 发表于 2017-3-20 21:10
bitwAnd这类函数是干什么用的?
整数的位运算, And, Or, Xor, Right(向右移), Left(向左移)
在C++ 里 就是这个 “>>”符号
For example, 4 向右移1个位,   4 >> 1 = 2
整数4在计算机里,用8个位的二进制数表示的话,   其实就是0000 0100(2)
再向右移一个位,即去掉最右边的一个数,左边用0补充,
结果就是: 0000 0010
转回十进制制: 2

简单的说,一个整数向右移一个位,相当于除2取整数部分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-21 21:06