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

时间:2016-04-13 18:24:48

标签: processing

警告:我是初学者。非常新秀的错误。使用的语言是Processing(Java)。

我使用函数连续添加数字(即1 + 2 + 3 + 4 + 5 + 6等等),最多10个。我使用float" num"表示以递增方式计算的高度,即10。

接下来,我计算阶乘(1 * 2 * 3 * 4 * 5 * 6,依此类推),最多10个。

我的老师在课堂上给出了连续添加数字的例子,如下所示:

 
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;
  }

1 个答案:

答案 0 :(得分:1)

要理解代码,请尝试逐行进行。添加注释可能有助于理解。它也可能有助于使用更长和更具描述性的变量名称。让我们尝试一下有效的功能:

 
//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以外的其他内容增加会发生什么?