P5727 【深基5.例3】冰雹猜想

文章讲述了如何使用Java简化Hailstone猜想的递归代码,通过`hailstone`函数实现数字序列的倒序输出,当输入为1时递归终止。
摘要由CSDN通过智能技术生成

【深基5.例3】冰雹猜想 - 洛谷icon-default.png?t=N7T8https://www.luogu.com.cn/problem/P5727这种方法比较繁琐,预先定义固定的数组长度,很局限:

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int i=0;
        int[] a=new int[1000000];
        
        while(n!=1) {
        	a[i]=n;
        	i++;
        	if(n%2==1) {
        		n=n*3+1;
        	}else if(n%2==0) {
        		n=n/2;
        	}
        	
        }
        a[i]=1;
        
        
        for(int j=i;j>=0;j--) {
        		System.out.printf("%d"+" ",a[j]);
        }
    }
}

简化的方法如下:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        hailstone(n);
    }

    public static void hailstone(int n) {
        if (n == 1) {
            System.out.print(n);
        } else {
            hailstone((n % 2 == 0) ? n / 2 : n * 3 + 1);
            System.out.print(" " + n);
        }
    }
}

这段代码首先读取了输入的整数 n,然后调用名为 hailstone 的递归函数。如果当前数字 n 是 1,那么递归结束,直接输出 1;否则,根据当前数字是奇数还是偶数,递归调用 hailstone 函数。递归调用的顺序使得最终的输出是从最后的 1 开始的整个变化序列的倒序。

递归的终止条件是当输入的数字 `n` 等于 1 时,即 `n == 1`。在这种情况下,递归函数不再继续调用自身,而是直接输出当前的数字 1,结束递归。

  • 14
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值