读书人

递归函数如何了?吼吼。

发布时间: 2012-04-13 13:50:24 作者: rapoo

递归函数,怎么了?吼吼。。
#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;} 

读书人网 >C语言

热点推荐