各位大侠,小弟刚接触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(); }
----------------解决方案--------------------------------------------------------