递归函数,怎么了?吼吼。。
#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
.
.
.
就这样啊!怎么错了!
最后在主函数你输出啊!
[解决办法]
你参数都不一样
int fax(int x,int a[])
怎么能
fax(x-1-i)
调用呢
[解决办法]
#include "stdio.h"
int fax(int x,int a[]);
void main()
{
int a[10],x,m,i,fx;
printf("x:");
scanf("%d",&x);
printf("m:");
scanf("%d",&m);
for(i=0;i<10;i++)
{
printf("a[%d]:",i);
scanf("%d",&a[i]);
}
fx=fax(x,a);
printf("fx:%d\n",fx);
printf("fx%m:%d\n",fx%m);
}
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)*a[i];
}
return k;
}
[解决办法]
- C/C++ code
#include <stdio.h>int 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); return 0;}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;}