zoukankan      html  css  js  c++  java
  • 角谷步数

    /*  角谷步数 
     * 你听说过角谷猜想吗? 
     任意的正整数,比如 5, 我们从它开始,如下规则计算: 
     如果是偶数,则除以2,如果是奇数,则乘以3再加1. 
     如此循环,最终必会得到“1” ! 
    
     比如 5 的处理过程是: 
     5 
     16 
     8 
     4 
     2 
     1 
    
     一个正整数经过多少步才能变成1, 称为角谷步数。 
     对于5而言,步数也是5 
     对于1,步数为0 
    
     本题的要求是,从标准输入给定一个整数n(1<n<300)表示角谷步数 
     求满足这个角谷步数的最小的正整数 
    
     例如: 
    
     输入: 
     3 
     则输出: 
     7 
    
     输入: 
     4 
     则输出: 
     2 
    
     输入: 
     7 
     则输出: 
     16
     */
    import java.util.Scanner;
    
    public class 角谷步数 {
    	static int sum = 0;
    
    	public static void f(int n) {
    		if (n == 1) {
    			return;
    		}
    		sum++;
    		if (n % 2 == 0) {
    			f(n / 2); // 如果是偶数,则除以2
    		} else {
    			f(n * 3 + 1); // 如果是奇数,则乘以3再加1
    		}
    	}
    
    	public static void main(String[] args) {
    		Scanner scan = new Scanner(System.in);
    		System.out.println("输入给定一个整数n(1<n<300)");
    		int n = scan.nextInt();
    		f(n); // 得到角谷步数sum
    		System.out.println(sum);
    	}
    }
    运行结果:
    输入给定一个整数n(1<n<300)
    7
    16
    


  • 相关阅读:
    树形地铁系统[树的最小表示]
    156. 矩阵[二维的hash]
    兔子与兔子
    滑动窗口【单调队列入门题】
    【YBTOJ】生日相同
    【YBTOJ】移位包含
    【YBTOJ】【HDUOJ 3085】逃离噩梦
    【YBTOJ】立体推箱子
    【CodeForces 1408F】Two Different
    【Luogu P3338】[ZJOI2014]力
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3150303.html
Copyright © 2011-2022 走看看