请帮助打印系列以及1*3-3*5 + 5*7等系列的总和,我已经在php中使用了这样的代码
class series {
function ser(){
$i = 0;
$k = 3;
$m = 0;
for($j = 1; $j < 3; $j++) {
if($j % 2 == 0 ) {
$m = $i + ($i * $k);
} else {
$m=$m-($i*$k);
}
}
//$m = $m + $i;
echo "$m";
}
}
$se = new series();
$se->ser();
Run Code Online (Sandbox Code Playgroud)
我已经测试了2次
通过一些简单的操作,可以找到总和S的公式.如果n是偶数(和Se),则增加项对产生
Se = (1*3 - 3*5) + (5*7 - 7*9) + (9*11 - 11*13) ...
Se = -4*( 3 + 7 + 11 + ... )
Run Code Online (Sandbox Code Playgroud)
括号中的术语可以拆分并总结:
Se = -4*( 1+2 + 3+4 + 5+6 + ... )
Se = -4*( n*(n+1)/2 )
Se = -2*n*(n+1)
Run Code Online (Sandbox Code Playgroud)
如果n是奇数(总和那么),则必须将最后一项添加到Se:
So = Se + 4*n*n-1
So = +2*n*(n+1) - 1
Run Code Online (Sandbox Code Playgroud)
在C中实现:
int series ( unsigned int n )
{
if ( n%2 == 0 )
return -2*n*(n+1);
else
return +2*n*(n+1) - 1;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
这可能是功课,但无论如何都要进行.希望你能从中学到一些东西.
上面的代码太可怕了.过于复杂,没什么......这是一个非常简单的版本.我不知道这是什么语言,但我会为你做类似的事情......去找一本关于编程的书,这将是你时间的明智投资.
function my_sum(int $count) {
$result = 0;
$sign = 1;
for ($i=1; $i<=$count; $i++) {
$result = $result + $sign * (2*$i-1) * (2*$i+1);
$sign = - $sign;
}
return $result;
}
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助......你可能会对此有所了解.
小智 5
我更喜欢递归函数,通过这种方式你可以stackoverflow(woot!):):
public static int serie(int n){
if(n<1){
return 0;
}else{
return (n%2==0?-1:1)*(4*n*n-1)+serie(n-1);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2423 次 |
最近记录: |