登录论坛

查看完整版本 : [求助]不用循环的形式求出和式的值


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

没有通用性

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

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

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

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

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