【问题标题】:sum of series 1*3-3*5+5*7 [closed]系列1 * 3-3 * 5 + 5 * 7的总和[关闭]
【发布时间】:2009-12-12 04:31:19
【问题描述】:

请帮助打印系列以及系列总和,如 1*3-3*5+5*7 最多 n 个术语,我在 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();

我只测试了2次

【问题讨论】:

  • 第 1 步:格式化您的代码,使其可读。第 2 步:告诉我们这是什么语言。第 3 步:当非成员函数就足够时,不要使用成员函数。
  • 您应该点击答案旁边的绿色复选标记将其标记为正确并给予好评。
  • 这一定是PHP!所以请在标签中添加 PHP 并删除其他不明确的标签名称(sum series mate)。如果这确实是一个家庭作业问题,那么家庭作业是必须的:)

标签: php math sum series


【解决方案1】:

通过一些简单的操作,我们可以找到求和 S 的公式。 如果 n 是偶数(总和 Se),则添加项对产生

 Se = (1*3 - 3*5) + (5*7 - 7*9) + (9*11 - 11*13) ...
 Se = -4*(  3 + 7 + 11 + ...  )

括号里的词可以拆分总结:

 Se = -4*( 1+2 + 3+4 + 5+6 + ...  )
 Se = -4*( n*(n+1)/2 )
 Se = -2*n*(n+1)

如果 n 是奇数(总和 So),则最后一项必须添加到 Se:

 So = Se + 4*n*n-1
 So = +2*n*(n+1) - 1

C 中的实现:

int series ( unsigned int n )
{
  if ( n%2 == 0 )
    return -2*n*(n+1);
  else
    return +2*n*(n+1) - 1;
}

【讨论】:

  • 在急于实现大量循环之前在纸上做一些数学运算:这才是真正的优化!
【解决方案2】:

这可能是家庭作业,但无论如何都要完成。希望你能从中学到一些东西。

上面的代码太可怕了。太复杂了……这是一个非常简单的版本。我不知道这是什么语言,但我会为你做一些类似的事情......去买一本关于编程的书,这将是你时间的明智投资。

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

希望这会有所帮助...您可能对此有所了解。

【讨论】:

  • 您意识到他可能只是复制/粘贴了这个答案而没有阅读或理解它?
【解决方案3】:

我更喜欢递归函数,通过这种方式你可以 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);
    }
}

【讨论】:

    【解决方案4】:

    或者,使用以下方法计算您的系列的前 n 项。抱歉还没有弄清楚如何让 SO 正确显示 LaTeX,也许有人可以为我编辑它,但如果你这样做,请留下评论并附上说明!

    \frac{1}{2} \left(-4 (-1)^n n^2-4 (-1)^n n+(-1)^n-1\右)

    或者,由精彩的EquationSheet.com生成:


    (来源:equationsheet.com

    【讨论】:

    • 我希望你能和我一样发现这个网站有帮助,马克。只需粘贴到您的 LaTeX 中,复制生成图像的 URL,然后将其作为图像添加到您的 SO 发布中。很棒的东西。
    猜你喜欢
    • 2020-02-12
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多