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
    


  • 相关阅读:
    python实现Socket通信原理
    SSL加密原理
    HackTheBox实战
    wireshark实战应用(长期更新,工作随笔)
    DNS域传输漏洞复现
    网站开发语言判断
    Linux:Day39(上) mysql基础
    Linux:Day38(下)
    Linux:Day38(上)
    Linux:Day37(上)
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3150303.html
Copyright © 2011-2022 走看看