gpt4 book ai didi

Java 逻辑测试题 Fancy Number

转载 作者:行者123 更新时间:2023-12-01 07:01:23 24 4
gpt4 key购买 nike

1.奇特数字是序列 1、1、5、17、61、... 中的数字

请注意,前两个奇数是 1,除前两个之外的任何奇数都是前一个数字的三倍和前一个数字的两倍之和。请参阅下文:

1, 1,

3*1 +2*1 = 5

3*5 +2*1 = 17

3*17 + 2*5 = 61

编写一个名为 isFancy 的函数,如果其整数参数是 Fancy 数字,则返回 1,否则返回 0。该函数的签名为 int isFancy(int n)

解决方案:

public class fancynumber {
public static void main(String[] args) {
System.out.println(isFancy(5));
System.out.println(isFancy(17));
System.out.println(isFancy(61));
}

private static int isFancy(int i) {
int previous = 1;
int pprevious = 1;
int set = 0;
int currentvalue = 0;
for(int a = 0; a<i;a++){

currentvalue = 3*previous + 2*pprevious;

if(currentvalue==i){
set = 1;
break;
}
else{
set = 0;
previous = currentvalue;
pprevious = previous;
}


}
return set;
}

}

这里有什么问题吗?我无法解决这个问题。这里,根据条件,所有函数都应该显示1,但只有第一个显示1,其他两个显示0。为什么?

最佳答案

在将 previous 的值分配给 pprevious 之前,您将覆盖它。

改变

    previous = currentvalue;
pprevious = previous;

    pprevious = previous;
previous = currentvalue;

关于Java 逻辑测试题 Fancy Number,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47177706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com