角谷定理的递归实现
角谷定理
输入一个自然数,若为偶数,则把它除以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;类变量用于统计递归函数调用的次数
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
