| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5726 人关注过本帖
标题:关于(1+x)的n次方的问题
只看楼主 加入收藏
edward_lu
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-12-9
收藏
得分:0 
以下是引用pangding在2010-12-9 22:46:52的发言:

给个公式可能更方便你在程序里迭代。
 
用组合数写二项式公式是
(1+x)^m = ΣC(k,m)x^k
里面的 C(k,m) 可以用加法算出来:
C(k+1,m) = C(k,m-1) + C(k-1,m-1)
能说的具体一点吗,才刚学,有些不大明白,Σ可以在编程里直接用吗,还有那个C是啥意思?
2010-12-09 22:52
edward_lu
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-12-9
收藏
得分:0 
以下是引用pangding在2010-12-9 22:52:09的发言:

糊涂了,上面的那个公式这里不好用……
 
用这个:
C(k+1,m) = (k+1)!/m!(m-k-2)! = (k+1)*(m-k-1) * k!/m!(m-k-1)! = (k+1)/(m-k-1) * C(k,m)
就是说前一项的系统算完了,后一项的可以直接用那个值。不用重新算。
额额,不好意思哈,还是没大看明白
2010-12-09 22:56
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
用类似下面的代码就能搞定。我这是随手写的,应该不对,你自己调试一下可能就行了。
程序代码:
int c, k;
double res = 0, xp = 1.0;

for (c=1, k=0; k < m; k++) {
    res += c * xp;
    c *= (m-k)/(k+1);
    xp *= x;
}


[ 本帖最后由 pangding 于 2010-12-9 23:13 编辑 ]
2010-12-09 22:56
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
回复 11楼 edward_lu
我写的那个式子,用的是数学里的符号,可能你没见过,不过也没事。你是初中生?
2010-12-09 23:01
edward_lu
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-12-9
收藏
得分:0 
以下是引用pangding在2010-12-9 23:01:54的发言:

我写的那个式子,用的是数学里的符号,可能你没见过,不过也没事。你是初中生?
大一新生和。。。那个总和的符号肯定认识,我只是问,那个是应该不能在C++里直接用的吧,呵呵
2010-12-09 23:07
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
嗯,肯定不能用的。要自己用循环加。

我刚才公式写错了,帖子校正了一下~~
唉,今天看来状态不佳。发言可能不太靠谱,大家一定要自己亲自推推。我就当抛砖引玉了

[ 本帖最后由 pangding 于 2010-12-9 23:15 编辑 ]
2010-12-09 23:10
kittel
Rank: 2
来 自:武汉
等 级:论坛游民
威 望:1
帖 子:38
专家分:73
注 册:2010-11-19
收藏
得分:20 
回复 楼主 edward_lu
程序代码:
#include<iostream>

#include<cmath>
using namespace std;
int main() {
    double x,sum=0;
    int m;
    cout<<"please give m,x:"<<endl;
    cin>>m;
    cin>>x;
    int a=1;
    sum+=a;
    for(int i=1;i<m+1;i++) {
        a=a*(m-i+1)/i;
        sum+=a*pow(x,i);
    }
    cout<<"(1+x)^m= "<<sum<<endl;
    cout<<"(1+x)^m= "<<pow(1+x,m)<<endl;
    return 0;
}
你看这样行不行?应该是你要表达的意思,两种方法可以对比,结果是一样的。
2010-12-11 13:10
快速回复:关于(1+x)的n次方的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019703 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved