在 2011年5月17日 下午7:37,宏羽杜 dongfengweixiao@gmail.com写道:
这个题目的算法很单纯,但是结果很蛋疼。
一共出了三个问题:
当然最大的问题是算组合数时的公式写错了,排错时才发现,第二个就是循环应该从0开始,第三个问题是,==错写成=. Version 2.0版如下: #include <stdio.h> int fab(int number) { if(number>0) return fab(number-1)*number; else if(number==0) return 1; return -1; } int comb(int number,int count) { int a,b,c; a=fab(number); b=fab(count); c=fab(number-count); if((a<0)||(b<0)||(c<0)) return 0; else return a/b/c; }
int main() { int sum=0,count,number; scanf("%d",&number); number--; for(count=0;count<=number;++count) { sum+=comb(number,count); }
printf("the result is:%-d\n",sum); return 0; }