java-没有递归的雹子序列(请)

嗨,我对编码非常陌生,并且正在与一位老师一起上入门Java课,希望您已经了解所有知识.我必须编码冰雹序列,它表示为:

 

选择一些正整数并将其称为n.
如果n为偶数,则将其除以2.
如果n为奇数,则将其乘以3并加1.
继续此过程,直到n等于1.

我们还没有学习过递归或数组,他说我们不需要在此代码中使用它,尽管我不太清楚这意味着什么.我们将展示使用顺序公式得出一个步骤.

这就是我所拥有的,并且存在以下问题:

>无法识别奇/偶整数
>在执行的步骤中显示了错误的数字

请帮助我识别出我要去的地方并提供解释.我很绝望.

 

import javax.swing.JOptionPane;
public class Hailstone {

public static void main(String[] args) {
    String output = "";
    int n;     
    n = Integer.parseInt(JOptionPane.showInputDialog("\nEnter an Integer"));

    while (n != 1) {
        int result = 0;
        if (n%2 == 0) {
            result = n /= 2; 
            output += n + " is even so I took half  =   " + result;     
            JOptionPane.showMessageDialog(null, output); 

        }else{
            result = n*3 + 1;
            output += n + " is odd so I took 3n+1 = " + result;     
            JOptionPane.showMessageDialog(null, output); 

    }

    }

}  
} 

最佳答案

该语句:result = n / = 2;不按照您的想法去做.它将n除以2,将结果存储在n中,然后还将结果存储在result中.但是,这不是代码的主要问题.

 

问题是您缺少一件非常简单的小事情:在循环中更新n.没有这个,n将永远不会改变. (除了我上面提到的意外修改.)

因此,您需要做的(在解决了上述问题之后)如下:

在循环结束之前,添加以下行:

n =结果;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值