PAT【乙级】JAVA——(3n+1)猜想之习题思路

目录

一、练习题目

二、遇到问题

2.1 什么是正整数

2.2 怎么才能自己调用自己【自我循环】

三、练习实战

3.1 Test1001

3.2 i++/++i 小知识--简书【转载】


  • 一、练习题目

https://pintia.cn/problem-sets/994805260223102976/problems/994805325918486528

  • 二、遇到问题

2.1 什么是正整数

大于0并且是int类型,就是正整数

2.2 怎么才能自己调用自己【自我循环】

我起初写了if/else但是一个循环就结束了,所以这里强调使用while

  • 三、练习实战

  • 3.1 Test1001

package lambda;

/**
 * @Description : 1001 害死人不偿命的(3n+1)猜想
 * @Auth : Xuhy
 * @Date : 2019/8/12
 * @Time : 19:24
 */
public class Test1001 {


    public static void main(String[] args) {
        // abPlus();
        Demo1001(3);

    }


    private static void Demo1001(int n) {
        int num = 0;

        while (n != 1) {
            if (n % 2 != 0) {
                n = 3 * n + 1;
            } else {
                n /= 2;
                num++;
            }

        }
        System.out.println(num);
    }

    /**
     * i++ / ++i 区别
     *
     * @param
     * @return
     * @date Xuhy,2019-08-13 10:19
     */
    private static void abPlus() {
        /**
         * i++【后加加,表示当前i++为1,将1的值赋给j变量,然后运行到sout语句时i自增为2】
         */
        int iAfter = 1;
        int jAfter = iAfter++;
        System.out.println("After  i = [" + iAfter + "] j = [" + jAfter + "]");// i = [2] j = [1]

        /**
         * j++【前加加,运行到 int j = ++i表达式之前i就会自增1,并且把自增的值2赋给变量j】
         */
        int iBefore = 1;
        int jBefore = ++iBefore;
        System.out.println("Before i = [" + iBefore + "] j = [" + jBefore + "]");// i = [2] j = [2]
    }
}
  • 3.2 i++/++i 小知识--简书【转载】

你可能感兴趣的:(PAT,乙级)