CS106A assignment3 --problem2 The Hailstone Sequence

/* The program is to compute a number ,show the process of the hailstone.
 * hailstone number: Start with any positive integer (an initial seed)
 * and obtain a sequence of numbers by following these rules.
 * 1. If the current number is even, divide it by two   ; 
 *   else if it is odd, multiply it by three and add one. 
 * 2. Repeat.
 * 
 * Let's try a few numbers to see what happens: 
 *  n=3; 10, 5, 16, 8, 4, 2, 1, 4, 2, 1, ... 
 *  n=4; 2, 1, 4, 2, 1, ... 
 *  n=5; 16, 8, 4, 2, 1, 4, 2, 1, ... 
 *  n=6; 3, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1, ... 
 *  n=7; 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1, ...
 *
 *author:zhendongYi
 *email:myyizhendong@google.com
 *time:2016/07/01
 * 
 */
import acm.program.*;

public class Hailstone extends ConsoleProgram {
    public void run() {
        int number = readInt("Please input an positive Integer:");
        if(number%2==0){
            even(number);
        }else{
            odd(number);
        }
    }

    /*
     * when the number is even,divide it by two.
     */
    private void even(int number) {
        
        println(number+"  is even,so I make half:   "+number/2);
        number /=2;
        if(number!=1){
            if(number%2==0){
                even(number);
            }else{
                odd(number);
            }
        }
    }

    /*
     * when the number is odd,multiply it by three and add one.
     */
    private void odd(int number) {
        println(number+"  is odd,so I make 3n+1:    "+number*3+1);
        number = 3*number+1;
        if(number!=1){
            if(number%2==0){
                even(number);
            }else{
                odd(number);
            }
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容