#include <stdio.h> float fact(int);
void main() { int x; printf("输入一个整数:\n"); scanf("%d",&x); printf("\n结果是:%0.0f\n\n",fact(x)); }
float fact(int n) { float sum=0.0,b; if((n==1)||(n==0)) return 1; for(int j=1;j<=n;j++) { b=n*fact(n-1); sum+=b; } return sum; } 这是一条求1!+2!+3!+。。。。+n!的程序,我不会用递归做,现在就算我做出了,结果也不对,高手可以帮我看看我写的程序吗?我的程序错在哪里?请高手指出!
[此贴子已经被作者于2005-5-1 10:16:57编辑过]
----------------解决方案--------------------------------------------------------
#include <stdio.h> float fact(int);
void main() { int x; printf("输入一个整数:\n"); scanf("%d",&x); printf("\n结果是:%0.0f\n\n",fact(x)); }
float fact(int n) { float sum=0.0; for(int i=1,a=1;i<=n;i++) { a*=i; sum+=a; } return sum; } 这是我用递推做的程序,真心希望有高手用递归做给我看!
[此贴子已经被作者于2005-5-1 10:17:17编辑过]
----------------解决方案--------------------------------------------------------
C语言课本上有递归调用的,看看就可以了.
----------------解决方案--------------------------------------------------------
能否抽出你们仅有的时间来看看我的程序吗?
#include <stdio.h> float fact(int);
void main() { int x; printf("输入一个整数:\n"); scanf("%d",&x); printf("\n结果是:%0.0f\n\n",fact(x)); }
float fact(int n) { float sum=0.0,b; if((n==1)||(n==0)) return 1; for(int j=1;j<=n;j++) { b=n*fact(n-1); sum+=b; } return sum; } 这是一条求1!+2!+3!+。。。。+n!的程序,我不会用递归做,现在就算我做出了,结果也不对,高手可以帮我看看我写的程序吗?我的程序错在哪里?请高手指出 函数里的for循环用错 #include<stdio.h> int f(int); /*f()为求n阶层的函数*/ main() { int i,n ,sum=0; scanf("%d",&n); for(i=n;i>0;i--) sum+=f(i); /*每个阶层的值相加*/ printf("\nsum=%d\n",sum); getch(); } int f(int n) { if(n==1) return 1; else return(n*f(n-1)); } .
----------------解决方案--------------------------------------------------------
你这main函数中printf语句怎么:%0.0f啊.怎么可以这样呢.
----------------解决方案--------------------------------------------------------