这是数组a[10]
目前创新互联建站已为1000+的企业提供了网站建设、域名、网站空间、网站托管维护、企业网站设计、惠济网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
dis(a[i]);//初始为啊0,就是a[0],然后在函数内部调用dis(a[i+1]),就是a[1],然后递增到数组结束
dis(a[i]) //i=0;
dis(a[i]+1)//i=0+1
dis(a[i]+1)//i=1,i+1=1+1=2.............
下面演示一个斐波那契数列前N项和#include stdio.h
#define COL 10 //一行输出10个
long scan()
{ //输入求fibonacci函数的第N项
int n;
printf("Input the N = ");
scanf("%d",n);
return n;
}
long fibonacci(int n)
{ //fibonacci函数的递归函数
if (0==n||1==n) { //fibonacci函数递归的出口
return 1;
}
else {
return fibonacci(n-1)+fibonacci(n-2);
//反复递归自身函数直到碰到出口处再返回就能计算出第n项的值
}
}
int main(void)
{
int i,n;
n = scan();
printf("Fibonacci数列的前%d项\n", n);
for (i=0; in;) //输出fibonacci函数前n项每项的值
{
printf("%-10ld",fibonacci(i++)); //调用递归函数并且打印出返回值
if(i%COL==0)
{ //若对COL取余等于0就换行,也就是控制每行输出多少个,
//而COL=10就是每行输出10个
printf("\n");
}
}
printf("\n");
return 0;
}
这段程序的意思是对传来的参数n,如果n1,程序会崩溃;如果n1则没大1,返回就多2,最后必然会执行c=10。比如n=5,则返回的是18((5-1)x2+10=18)
比如说做了5次递归,即n=5;执行的操作如下:
第1次调用(n=5) ,定义了一个intc;
第2次调用(n=4) ,定义了一个intc;
第3次调用(n=3) ,定义了一个intc;
第4次调用(n=2) ,定义了一个intc;
低5次调用(n=1) ,定义了一个intc;
n=1时,满足了条件n==1,故此时c=10;
第5次返回,此时第5次定义的c=age(int n)=10;前4次定义的int c没有值,下同
第4次返回 ,此时第4次定义的c=age(int n)+2=10+2=12
第3次返回,此时第3次定义的c=age(int n)+2=12+2=14
第2次返回,此时第2次定义的c=age(int n)+2=14+2=16
第一次返回,此时第一次定义的c=age(int n)+2=16+2=18。此时按下面的程序b接收了返回值
我觉得你应该注意的是age(int n)本身就代表一个int值,就算没有参数接收也可以参与到运算当中,就像这个例子一样。
程序:
#includestdio.h
int age(int n)
{int c;
if(n==1)
c=10;
else
c=age(n-1)+2;
return c;
}
void main()
{
int a=0,b=0;
scanf("%d",a);
b=age(a);
printf("result is %d\n",b);
}
这个很好理解啊,你看看你输入的参数什么就可以了。
你函数的声明是void fuck ( int n ,char o, char t, char th)
第一次调用你是fuck ( n, 'A','B','C');这时,o=A,t=B,th=C,所以输入
printf ("%c %c %c\n",t,o,th);就是BAC,
然后你fuck(n-1,t,o,th);,这时o=原来的t=B,t=原来的o=A,th=C,输出
printf ("%c %c %c\n",t,o,th);就是ABC了如此类推
#include stdio.h
#include math.h
double mysqrt(double a, double x0)
{
if (a0)return -1;
double x1 = 1.0 / 2 * (x0 + a / x0);
if (fabs(x1 - x0) 1e-5)return x1;
return mysqrt(a, x1);
}
int main()
{
double a, x0 = 1.0;
printf("Enter a:");
scanf("%lf", a);
printf("The sqrt of %lf=%lf\n", a, mysqrt(a, x0));
return 0;
}