MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [求助]不用循环的形式求出和式的值 (https://www.labfans.com/bbs/showthread.php?t=3078)

wmch85 2008-05-16 16:00

[求助]不用循环的形式求出和式的值
 
如题,写出
1+2+4+8+16+。。。(即2的n次方的和式)
求个思路和核心代码

这个问题困了2个多小时,但就是写不出正确的来
function sum=sum(k)
if k==0
sum(0)=1;
else
sum=sum(k-1)+2*2^(k-1);
end

请指点,不胜感激!!

wmch85 2008-05-17 15:20

真是太伤心了,练连续两个问题都没人理
什么网站啊???连个讨论的人都没有

版主,请问,你们办这个论坛的宗旨是什么啊??

shiqiang 2008-05-17 17:52

呵呵,抱歉呀,同学,那你加我QQ,咱两商量一下,我最近有些忙,有些问题没时间看,请原谅。

yhcode 2008-05-17 19:25

这个应该不难吧,弄个等比数列求和公式 sum = a1*(1-q^n)/(1-q)
function result = dengbi_sum(q,startind,endind)
a1 = q^startind;
t = 1 - q^(endind - startind);
result = a1 * t;
result = result/(1-q);



如计算1+2+4+8+... +2^k 则 result = dengbi_sum(2,0,k)
如计算 3+9+...+3^k 则 result = dengbi_sum(3,1,k)

上面的代码没用经过验证,不过应该没有问题,呵呵!

tolabfans 2008-05-19 09:16

[QUOTE=yhcode;10931]这个应该不难吧,弄个等比数列求和公式 sum = a1*(1-q^n)/(1-q)
function result = dengbi_sum(q,startind,endind)
a1 = q^startind;
t = 1 - q^(endind - startind);
result ...[/QUOTE]

没有通用性

wmch85 2008-05-19 16:35

[QUOTE=yhcode;10931]这个应该不难吧,弄个等比数列求和公式 sum = a1*(1-q^n)/(1-q)
function result = dengbi_sum(q,startind,endind)
a1 = q^startind;
t = 1 - q^(endind - startind);
result ...[/QUOTE]

非常感谢,你给我提供了一个全新的思路。
通过这几天的努力,我自己便出了一个具有通适性的迭代代码。为感谢大家的帮助,特贴出来和大家共享。只要是迭代问题,只需做小的更改即可。程序代码如下(经过验证):

function s=findsum(k)
if k==0
s=1;
else s=1+2*findsum(k-1);
end

希望与大家共同进步!!
谢谢大家!

前面由于着急出言不逊希望版主莫怪!


所有时间均为北京时间。现在的时间是 03:14

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.