C语言菜鸟,求下面程序的详细运行过程,感激不尽。

如题所述

#include <stdio.h>
//这是递归函数,不知道你有他的题目没?(他是干什么的)
//我把他掉个位置,先开始说主函数。
main()
{int z; //定义Z
z=f(3); //调用函数F 返回值给z
printf("%d\n",z);//输出Z
}

int f(int x)
{int y; //丁定义变量Y
if(x==0||x==1)return(3); //如果X=0或者X=1返回3
y=x*x-f(x-2); //如果不是返回y=x*x-f(x-2);
return y;
}
重点的是y=x*x-f(x-2);
这你看不懂吧。
就是说
F(0)=3
F(1)=3
F(2)=2*2-F(2-2)=4-F(0)=1
F(3)=3*3-F(3-2)=9-F(1)=9-3=6

解释起来还真是有点麻烦,因为不知道题目,
你可以百度下
典型的递归应用:求裴波契那数列
与他类似。。最经典的递归应该是求N! =1*2*3*4*5*6*......*n
#include<stdio.h>
double fun(int n);
int main(void)
{
int n;
printf("Enter n:");
scanf("%d",&n);
printf("%lf\n",fun(n));
return 0;
}
double fun(int n)
{
if(n==0||n==1)
return 1;
else
return n*fun(n-1);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-03
f 函数接收一个参数x,在函数中定义了整形变量y
进行判断,当参数x等于0或1的时候返回3,函数执行完毕
若没有执行if中的return 语句即执行下面的算式:y=x*x-f(x-2)
这里用递归再次调用f 函数。展开f(x-2)
y=x*x-((x-2)*(x-2)-f(x-4))
以此类推直至调用的f 中参数等于0或1
返回算式的结果;
main函数中定义整形变量z接受以3做参数的f函数返回值,打印出来
第2个回答  2012-11-03
先从主函数开始执行,z=f(3),调用f(x)函数,实参为3,即x=3.
3不等于0或者1,接着执行y=x*x-f(x-2);
即y=3*3-f(3-2)=9-f(1),然后调用自己本身,x=1,返回3,f函数结束
z=9-3=6
第3个回答  2012-11-03
这是一个递归问题,第一步:在主函数执行f(3),这时候x=3;之后进入被调函数,执行y=x*x-f(x-2);就是y=9-f(1);在进入被调函数,这是x=1;f(1)=3;依次返回,y=9-3=6;结果是6.
相似回答