首页 > 解决方案 > 创建一个包含前 x 个快乐数字的数组

问题描述

我想创建一个包含前 x 个快乐数字的数组。

一个快乐的数字可以定义为一个数字,当它被其数字的平方和重复替换时将产生 1。如果这个过程导致包含 4 的数字无限循环,则该数字称为不快乐数字。

我设法编写了两个函数:一个是对平方数字求和,另一个是检查一个数字是否满意:

public static int sumDigitSquare(int n) {
    if(n < 10)
        return (int) (Math.pow(n,2));

    return (int) (Math.pow((n%10),2)) + sumDigitSquare(n/10);
}

public static boolean isHappy(int n) {
    int res = sumDigitSquare(n);

    while(res != 1 && res != 4) {
        res = sumDigitSquare(res);  
    }

    if(res == 1) 
        return true;

    return false;
}

现在我想添加一个函数public static int[] happyArray(int x) ,它将前 x 个快乐数字作为数组返回,但我不知道如何实现这一点。

标签: javaarrays

解决方案


这是一种方法。但是,它不会验证您的其他方法是否正确。

  • 分配一个数组来存储它们
  • 第一个数字 ,n设置为 1。
  • 继续交互直到找到 x 个数字
  • 为 while 循环的每次迭代递增n
  • 找到数字后返回数组x
public static int[] getHappy(int x) {
    int n = 1;
    int[] happyNumbers = new int[x];
    int i = 0;
    while (i < x) {
        if (isHappy(n)) {
            happyNumbers[i++] = n;
        }
        n++;
    }
    return happyNumbers;
}

推荐阅读