递增值时数学(和代码)不好
Bad math (and code) while incrementing values
警告:我完全是个初学者。未来非常菜鸟的错误。使用的语言是 Processing (Java).
我正在使用函数将数字连续相加(即 1+2+3+4+5+6 等等)最多 10。我使用浮点数 "num" 表示它应该计算多高以这种增量方式增加,即 10。
接下来,我正在计算最多 10 的阶乘(1*2*3*4*5*6 等等)。
我的老师在class中给出了连续添加数字的例子,它看起来像:
float Addition(float num) {
float val1=1;
float val=0;
while (val1 <=num){
val=val+val1;
val1++;
}
return val;
}
这应该加到 55,因为我们一直递增到 10。有人可以为我解释一下这个概念吗?我现在正在研究以 4(即 0+4+8+12+16+20 等)为增量增加到 10,但我的数学是 WAY 关闭;它应该等于 180,但实际上等于 45:
float Addition2(float num) {
float val1=1;
float val=1;
while (val1 <=num){
val=val*val1;
val1=val1+val2+4;
}
return val;
}
我不是要找人帮我解决数学问题,而是要解释这个概念本身以及我如何正确计算它(如果这有意义的话)。
提前致谢。
P.S.
作为奖励,这是我在阶乘方面的工作,同样也是错误的。如果有人也能解释一下这个的概念,那就太牛逼了:
float Multiplication1(float num) {
float val1=1;
float val=1;
while (val1 <=num){
val=val*val1;
val1=val1+2;
}
return val;
}
要理解代码,请尝试逐行阅读。添加注释可能有助于理解。使用更长和更具描述性的变量名称也可能有所帮助。让我们尝试使用有效的函数:
//this function adds up 1+2+...maxNumberToAdd
float addition(float maxNumberToAdd) {
//start at 1
float currentNumberToAdd = 1;
//keep track of your total sum
float totalSoFar = 0;
//loop 1,2,3...maxNumberToAdd
while (currentNumberToAdd <= maxNumberToAdd){
//add the current number to the total
totalSoFar = totalSoFar + currentNumberToAdd;
//go to the next number to add
currentNumberToAdd++;
}
//return the total
return totalSoFar;
}
现在你已经有了它,你可以考虑修改它来完成你的下一个任务。
你说你想从 0
而不是 1
开始。找到负责从 1
开始的代码行。如果将其更改为其他内容会怎样?
你说你只想每 4 个数字相加。找到负责转到下一个数字的代码行。如果您将它增加 1
以外的值会怎样?
警告:我完全是个初学者。未来非常菜鸟的错误。使用的语言是 Processing (Java).
我正在使用函数将数字连续相加(即 1+2+3+4+5+6 等等)最多 10。我使用浮点数 "num" 表示它应该计算多高以这种增量方式增加,即 10。
接下来,我正在计算最多 10 的阶乘(1*2*3*4*5*6 等等)。
我的老师在class中给出了连续添加数字的例子,它看起来像:
float Addition(float num) {
float val1=1;
float val=0;
while (val1 <=num){
val=val+val1;
val1++;
}
return val;
}
这应该加到 55,因为我们一直递增到 10。有人可以为我解释一下这个概念吗?我现在正在研究以 4(即 0+4+8+12+16+20 等)为增量增加到 10,但我的数学是 WAY 关闭;它应该等于 180,但实际上等于 45:
float Addition2(float num) {
float val1=1;
float val=1;
while (val1 <=num){
val=val*val1;
val1=val1+val2+4;
}
return val;
}
我不是要找人帮我解决数学问题,而是要解释这个概念本身以及我如何正确计算它(如果这有意义的话)。
提前致谢。
P.S.
作为奖励,这是我在阶乘方面的工作,同样也是错误的。如果有人也能解释一下这个的概念,那就太牛逼了:
float Multiplication1(float num) {
float val1=1;
float val=1;
while (val1 <=num){
val=val*val1;
val1=val1+2;
}
return val;
}
要理解代码,请尝试逐行阅读。添加注释可能有助于理解。使用更长和更具描述性的变量名称也可能有所帮助。让我们尝试使用有效的函数:
//this function adds up 1+2+...maxNumberToAdd
float addition(float maxNumberToAdd) {
//start at 1
float currentNumberToAdd = 1;
//keep track of your total sum
float totalSoFar = 0;
//loop 1,2,3...maxNumberToAdd
while (currentNumberToAdd <= maxNumberToAdd){
//add the current number to the total
totalSoFar = totalSoFar + currentNumberToAdd;
//go to the next number to add
currentNumberToAdd++;
}
//return the total
return totalSoFar;
}
现在你已经有了它,你可以考虑修改它来完成你的下一个任务。
你说你想从 0
而不是 1
开始。找到负责从 1
开始的代码行。如果将其更改为其他内容会怎样?
你说你只想每 4 个数字相加。找到负责转到下一个数字的代码行。如果您将它增加 1
以外的值会怎样?