首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

递归函数,如何了?吼吼。

2012-04-13 
递归函数,怎么了?吼吼。。#include stdio.hvoid main(){int fax(int x,int a[])int a[10],x,m,i,fxscanf

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

热点排行