角谷定理的递归实现
Posted 之墨_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了角谷定理的递归实现相关的知识,希望对你有一定的参考价值。
角谷定理
输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。
经过如此有限次运算后,总可以得到自然数值1。求经过多少次可得到自然数1
- java代码实现
public class Kaku{
static int s = 0;
public static void main(String [] args){
Scanner input = new Scanner(System.in);
System.out.print("请输入一个大于0的整数:");
int n = input.nextInt();
kaku(n);
System.out.println('\\n'+"经过"+s+"次运算得到自然数1");
}
public static void kaku(int n){
if(n == 1){
System.out.print(n +" ");
}
else if( n%2 == 0){
System.out.print(n+" ");
kaku(n/2);
s++;
}
else{
System.out.print(n + " ");
kaku(n*3+1);
s++;
}
}
}
kaku(n/2);
//n
为偶数,除以2(n 不为 1)
kaku(n*3+1);
//n
为奇数,乘3加一(n 不为 1)
if(n == 1) System.out.print(n +" ");
n
为1时,不在调用递归函数,结束递归
static int s = 0;
类变量用于统计递归函数调用的次数
以上是关于角谷定理的递归实现的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript - 代码片段,Snippets,Gist