C程序问题
#include<stdio.h>int a[]={0,1,2,3,4,5,6,7,8,9};
float f(int n){
if(n==1)
return a;
else
return(float)(n*f(n-1)+a/(n+1));
}
int main(){
int n=10;
printf("f(%d)=%g\n",n,f(n));
}
这个程序的结果是f(10)=0
是因为在执行f(int n)子程序时从n=10一直循环到f(n=1) ,然后因为满足条件n==1.返回a,因为a=0所以最后的结果是f(10)=0,程序是这样运行的嘛? 我稍微修改你的代码:#include <stdio.h>
int arr[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
float f(int n){
return n == 1 ? arr : ((float)n*f(n-1) + arr/(float)(n+1));
}
int main() {
int n;
scanf("%d", &n);
printf("%f", f(n));
return 0;
}输入 10 得 181439910
1814399.000000 本帖最后由 jhq999 于 2021-11-13 22:24 编辑
整形相除小于1就是0
页:
[1]