java 实现角谷定理
什么是角谷定理?
任意输入一个数,如果是偶数,则除以2,若是奇数,则乘3再加1.经历若干次后,最后的值一定是1,求需要经历多少次会变成1.
例如:
输入6:则
6 3 10 5 16 8 4 2 1
需要计算9次。
package day0720;
import java.util.Scanner;
public class Demo {
static int count =0;//创建一个全局变量进行计算次数
public static void main(String[] args) {
System.out.print("请输入一个数:");
int sc = new Scanner(System.in).nextInt();
int i = panduan(sc);
System.out.println();
System.out.println("共计算"+count+"次");
}
public static int panduan(int sc) {
if(sc==1) {
System.out.print(sc+" ");//输入为1不用进行运算
count++; //计数
}else if (sc%2==0) {
System.out.print(sc+" ");
sc=sc/2; //偶数需要除以2
panduan(sc);
//若不为1,需要继续进行运算,所以要再次调用
count++; //计数
}else if (sc%2!=0) {
System.out.print(sc+" ");
sc=sc*3+1; //奇数乘以3加1
panduan(sc);
//若不为1,需要继续进行运算,所以要再次调用
count ++; //计数
}
return count;
}
}
验证结果: