递增值时数学(和代码)不好

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 以外的值会怎样?