重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
try换掉, 是关键字,还有break 也不能在乱用。
创新互联是专业的介休网站建设公司,介休接单;提供成都做网站、成都网站制作、成都外贸网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行介休网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
楼主应该多看看编程例题,这样写很乱,可读性比较差。如果在开始就养成良好代码写作习惯,成为一个优秀的程序员不是问题,还有记得写注释,很重要。
try是系统保留关键字(应该会变色),不能做函数或变量名。。
C语言是没有try语句的,还有,你这个地方也就算是一个函数(在C语言里面你写的这个try只能是函数)
有语法错误,帮你改了,你自己再看看
#includestdio.h
void try(int,int,int);
int main()
{
int x=2,y=3,z=0; //y=3
printf("(1)x=%d y=%d z=%d\n",x,y,z);
try(x,y,z);
printf("(4)x=%d y=%d z=%d\n",x,y,z);
}
void try(int x,int y,int z)
{
printf("(2)x=%d y=%d z=%d\n",x,y,z);
z=x+y;
x=x*x;
y=y*y;
printf("(3)x=%d y=%d z=%d\n",x,y,z);
}
一点补充:最开始我运行你这个程序是在一个.cpp文件里面写的代码,然后运行,但是程序会报错,为什么呢?因为cpp一般而言是C++的文件,C++里面有try语句,try是他的一个关键字,所以函数名不能是关键字,程序报错了。
但是在一个.c文件里面是没有问题的~~
还有,你这个真心是一个函数,不是try语句,try语句是
try
{
do something
}
catch(some error)
{
do something
}
这是一个递归的处理
递归是使用栈实现的,下面仔细的分析一下压栈、退栈的情况
x=try(5);
调用try函数,进入try函数开始递归处理。
try(5)
当前n=5,if ( n0 )成立,进入if分支:
return ( n * try (n-2) );
也就是return ( 5 * try(3) );
当前栈中的情况:
5 --------栈底
try(3)
当前n=3,if ( n0 )成立,进入if分支:
return ( n * try (n-2) );
也就是return ( 3 * try(1) );
当前栈中的情况:
3
5 --------栈底
try(1)
当前n=1,if ( n0 )成立,进入if分支:
return ( n * try (n-2) );
也就是return ( 1 * try(-1) );
当前栈中的情况:
1
3
5 --------栈底
try(-1)
当前n=-1,if ( n0 )不成立,进入else分支:
else return(1);
返回1.
当前栈中的情况:
1 --------栈顶
1
3
5 --------栈底
所以整个递归处理后,栈的情况如下:
1 --------栈顶
1
3
5 --------栈底
在try(-1)时,到达递归的出口,开始从栈顶退栈,
所以退找后的表达式为:
1*1*3*5=15
所以最后x等于15,输出15