以下是我需要做作业的规则:
n个人围成一圈站着。从第1个人开始,将执行第2个人。重复此操作,直到最后一个人还活着,然后我们将其返回圈子。例如,对于:
这是我的Java代码。
const observer = new IntersectionObserver(([entry]) => {
console.log("called");
setIsVisible(entry.isIntersecting);
setIntersectionRatio(entry.intersectionRatio);
}, {
threshold: 0.9
});
据我所知,此代码无法正常工作。 对于输入1到15,它似乎按预期工作。但是,在输入16处,我得到的答案是3(假设为1),据我所知,此后的所有答案都变得不正确。 您能告诉我代码有什么问题吗?
我想尽可能使用此代码,因为它是用于家庭作业的,因此原创作品比更好/更有效的代码更有价值。这就是为什么我不想使用例如位移解决方案的原因。我自己没想到。
答案 0 :(得分:0)
谢谢大家,尤其是JB Nizet帮助我更好地写了我的问题。我弄清楚了为什么我的代码无法正常工作。当我说设计可能存在缺陷时,我是对的。当我在纸上写它时,我错误地估计了一个基于缺陷的公式。
基本上,我写了1,2,4,7。并假设在其余序列中都是如此。我算错了。应该是1,2,4,8。换句话说,是2的倍数。 这是新代码。
//Question 4
int num4 = MyConsole.readInt("Please enter a Number(integer) of people which you want me to test what is the safe spot in a Josephus problem: ");
int reducer = 1;
while (num4 > reducer){
num4 -= reducer;
reducer *= 2;
}
num4 = 1 + (num4-1)*2;
MyConsole.printPrompt("The Safe spot for the entered number is " + Integer.toString(num4));