#include <stdio.h>
int a[]={0,1,2,3,4,5,6,7,8,9};
int f(int n)
{
if(n==1) return a[0];
else return((n*f(n-1)+a[n]/(n+1)));
}
int main()
{
int n=6;
printf("f(%d)=%d",n,f(n));
}
过程有点懵 求解答
为什么等于f(6)=0;
计算机运算有优先级不能用数学方法看待比如3*(2*(1)+2/3),这里2/3先运算为0了所以最后加法后的都是零结果也就是0了
因为a[0] = 0
把0 删了就行
你把数组a的类型改成浮点型就可以了,因为数组里的数据都是整形,运算结果也是整形,计算机计算不满1的都认为是0,然后第一个为0,导致后面就全是0了
a[0]是零,乘法部分最终是0*某些数,后边加法部分,整数相除 分子小于分母值永远为零,最终结果是零