1163028233 发表于 2021-11-13 21:09:16

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,程序是这样运行的嘛?

傻眼貓咪 发表于 2021-11-13 22:14:05

我稍微修改你的代码:#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:21:27

本帖最后由 jhq999 于 2021-11-13 22:24 编辑

整形相除小于1就是0
页: [1]
查看完整版本: C程序问题