递归函数,怎么了?吼吼
#include "stdio.h"
void main()
{
int fax(int x,int a[]);
int a[10],x,m,i,fx;
scanf("%d%d",&x,&m);
for(i=0;i<10;i++)
scanf("%d",&a[i]);
fx=fax(x,a);
fx=fx%m;
printf("%d\n",fx);
}
int fax(int x,int a[])
{
int i,k=0;
if(x<10)
k=x;
else
{
for(i=0;i<10;i++)
k+=fax(x-1-i)*a[i];
}
return k;
}
一直出现c2198错误!没有搞明白,x>=10或小于10我都有交代啊!
程序的意思是,当x大于10时,执行
for(i=0;i<10;i++)
k+=fax(x-1-i)*a[i];
我自己试运行一下,比如当x=10,a[10]={1,1,1,1,1,1,1,1,1,1}
调用fax函数,因为x>10执行第二步,K=K+fax(9)*1;fax(9)=9
所以k=9;
i=1;k+=fax(8)*1;
k=17
.
.
.
就这样啊!怎么错了!
最后在主函数你输出啊!
[解决办法]
提供给函数 ‘fax’ 的实参太少
[解决办法]
k+=fax(x-1-i)*a[i];仅提供了一个参
但你定义的函数有两个参
并且没有默认参数
[解决办法]
k+=fax(x-1-i,a)*a[i];语法无误
不过结果是否是你想要的就要自己测试了