重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你这毛病太多!!
成都创新互联公司主要从事网站设计制作、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务商洛,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
首先没看明白你的
主函数
怎样调用的change
函数
。
再者函数
参数
不够详细啊!!光有一个参数是不够的,还得有个
数组
下标
作参数,好能表示你的
字符
要存到数组的哪个元素里。主函数中调用函数时用
change(num,0,)
下面按照你的
大体
思路
,给你答案。
#includestdio.h
char
a[26];
void
main()
{
int
change(long,int);
long
num;
scanf("%ld",num);
a[change(num,0)]='\0';
printf("%s\n",a);
}
int
change(long
num,int
p)
{
int
i,n;long
x,f;
n=p;
if(n==0num0)
{
a[n]='-';
n++;
num*=-1;
}
if(num10)
{a[n]='0'+num;return
1;}
else
{
x=num;f=1;
while(x9)
{
x=x/10;
f=f*10;
}
a[n]='0'+x;
printf("%d\n",x);
n++;
num=num-x*f;
}
return
change(num,n)+n-p;
}
递归函数有三点要求:
1,递归的终止点,即递归函数的出口
2,不断的递归调用自身
3,递归函数主体内容,即递归函数需要做的事情
ps:3一般可以放在2的前面或者后面,一般1放最前面。另外,2和3可以根据不同的需要合并,比如,有时候递归函数的主体就是返回调用下层函数所得到的结果。
具体例子如下:
void fun(int n)
{
if(n=0) return; //1 这是递归的终点,即出口
fun(n-1); //2、递归函数自身的调用
coutnendl; //3 递归函数的主体内容
}
2,3合并的情况
int fun(int n)
{
if(n=0) return 0;
return fun(n-1)+fun(n-2); //2 3合并
}
这样改。
#includestdio.h
float PI(int x)
{
if(x=0) return(0);
else
{
if(x2) return(0);
else
return(PI(x-2)+(1.0/(2*(x-1)-1)-1.0/(2*x-1)));//改成1.0 否则默认取整
}
}
void main()
{int x;float y;
printf("input a number:");
scanf("%d",x);
if(x%2==0)
y=PI(x);
else
y=PI(x-1)+1.0/(2*x-1);//1.0
printf("PI=%f\n",y*4);//y*4不是y/4
}