确定需要添加多少个整数(从数字1开始),以使总和大于100?使用JavaScript
我试图找到一个解决方案来解决这项任务“确定需要添加多少个整数,从数字1开始,以使总和大于100。”使用JavaScript。 我有我的解决方案,但我倾向于认为它是错误的。 你能帮帮我吗 我甚至不知道我是否正确理解了任务。 请参阅下面我的解决方案:确定需要添加多少个整数(从数字1开始),以使总和大于100?使用JavaScript,javascript,Javascript,我试图找到一个解决方案来解决这项任务“确定需要添加多少个整数,从数字1开始,以使总和大于100。”使用JavaScript。 我有我的解决方案,但我倾向于认为它是错误的。 你能帮帮我吗 我甚至不知道我是否正确理解了任务。 请参阅下面我的解决方案: <script> let result = 0; for ( i = 1; i<20; i++){ result+=i; if( result>100) { break } } console.log(i)
<script>
let result = 0;
for ( i = 1; i<20; i++){
result+=i;
if( result>100) {
break
}
}
console.log(i)
</script>
设结果=0;
对于(i=1;i100){
打破
}
}
控制台日志(i)
输出是14,这是正确的,但我不确定我解决它的方法。如果它有效,就没有问题
您可以简化它,例如使用
while
而不是for
循环:let total=0
让计数=1;
//我们循环直到总数大于或等于100。
而(总数<100){
//将当前计数添加到总数中
总数+=计数;
//增加计数。
计数++;
}
//我们需要考虑最后的++;
console.log(计数-1)代码>1+2+3+4+…+k
是一个
可以使用和然后解决此问题。
在这里,n是100,x是三角形的底面(在上面的例子中,k是循环中的i)
这是一个问题,使用以下方法解决:
如果我们用它们各自的值替换a b c,我们得到:
x=13.6509716981
或x=-14.6509716981
取决于我们使用的符号
如果将13.6509716981
四舍五入,则得到14,即预期结果
这是用JS编写的Math.ceil((-1+Math.sqrt(1-4*1*(-2*num)))/2)
,num
是要达到的值(在您的示例中为100)
这可以缩短为Math.ceil((-1+Math.sqrt(1+8*num))/2)
//您的原始代码,作为参考
函数FindNumberUsingLoops(num)
{
设结果=0;
//我修改了循环退出条件,以确保每个案例都能运行
对于(i=1;i=num){
返回i;
}
}
}
函数FindNumber(num)
{
返回Math.ceil((-1+Math.sqrt(1+8*num))/2);
}
log(“使用公式:+FindNumber(100));
log(“使用循环:+FindNumberUsingLoops(100));
log(“使用公式:+FindNumber(500));
log(“使用循环:+FindNumberUsingLoops(500));
log(“使用公式:+FindNumber(42));
log(“使用循环:+FindNumberUsingLoops(42));
log(“使用公式:+FindNumber(1000));
log(“使用循环:+FindNumberUsingLoops(1000));
log(“使用公式:+FindNumber(10000000000000000));
//取消下面的注释,这需要几秒钟来解决
//log(“使用循环:+FindNumberUsingLoops(10000000000000000))代码>你的解决方案是正确的。。。但是,如果您不确定迭代次数,则应该使用while循环。非常感谢您的回复。请你澄清最后一行代码好吗。为什么我们需要在这部分代码中减去一?(console.log(count-1)最后一行代码用于显示输出。我们将从总数中删除一行,因为在退出循环之前,它将增加count
变量。因此,我们的结果将减少一行。