当前位置: 代码迷 >> C语言 >> 感激不尽
  详细解决方案

感激不尽

热度:600   发布时间:2004-10-10 22:11:00.0
感激不尽

各位大侠,小弟刚接触C,遇到了问题,那位有空指教一下,感激不尽啊!!!

我是想实现一个数学函数,就是排列组合那里的求组合数;

n函数定义为整形就可以运行,可是数字大了就不行了!这我知道原因,所以我换成了LONG形

可系统提示说数据类型不匹配,我找了半天调不出来,那位高手帮我看看啊!!!!!!

#include "Stdio.h" #include "Conio.h" int hanshu(int dishu1,int dingshu1)/*求结果的函数*/ {long z; z=n(dishu1)/(n(dishu1-dingshu1)*n(dingshu1)); return z;} long n(int x)/*求阶乘的函数,就是显示这里出错!把long改成int 就没错了!可结果不如意,数字大了就不行了!*/ { long m; if (x==1) m=1; else m=n(x-1)*x; return m; }

main() { int dishu,dingshu; scanf("%d%d",&dishu,&dingshu); printf("%ld",hanshu(dishu,dingshu)); getch(); }

各位,那位有空帮我看看啊!!

搜索更多相关的解决方案: 感激不尽  

----------------解决方案--------------------------------------------------------

估计应该是改一下你的递归程序,先试试看,不行再说

long n(int x) { if (x==1) return 1 ; else return n(x-1)*x ; }


----------------解决方案--------------------------------------------------------

你这个问题有点怪;


----------------解决方案--------------------------------------------------------

#include "Stdio.h" #include "Conio.h" long n(int x); /*先声明函数n的类型*/

long hanshu(int dishu1,int dingshu1)/*返回的结果是long型,因此函数应为long型*/ { long z; z=n(dishu1)/(n(dishu1-dingshu1)*n(dingshu1)); return z; } long n(int x) { long m; if (x==1) m=1; else m=n(x-1)*x; return m; }

main() { int dishu,dingshu; scanf("%d,%d",&dishu,&dingshu); printf("%ld",hanshu(dishu,dingshu)); getch(); }


----------------解决方案--------------------------------------------------------
  相关解决方案