各位网友,帮忙解下下面的程序题。要过程。说一下程序是怎么运行的?还有就是return(3)是什么意思啊?

#include<stdio.h>
fun(intx)
{ifx==0//x==1)return(3);
p=x-fun(x-2);
return p;
}
main()
{pintf("%d\n",fun(9));
}

你的程序错误很多,排除输入时空格和中文标点外,有以下错误:

    你写的”return (3)“表示该函数的返回值为3,所以你的fun这个函数得写成"int fun(int x)"

     ifx==0//x==1)return(3);这一句应该是你少了个括号吧

    还有你的”printf“写错了吧,拼写错误

    顺便说一下,你可能看到”return(3)“和”return p;“不一样,其实2种写法都行,都表示函数的返回值

附上正确代码:

#include<stdio.h>

int fun(int x)

{

int p;

if (x==0||x==1) return (3);

p=x-fun(x-2);

return p;

}

main()

{

printf("%d\n",fun(9));

}

追问

恩恩,就是这个题。那怎么做啊,不会做啊,给详细解一下吧,要过程。非常感谢

追答

先说说你自定义的“fun”函数。这是一个递归函数,说白了,就是一个函数或过程直接或间接调用它本身,就好比数学上的“递推公式”,只要知道了开头几个数,就可以推出后面几个数。
首先,当参数是0或1时,它的返回值是3,那个“if (x==0||x==1)”就是判断参数x是否为0或1(if语句中那个“”||“表示”或“,还有”&&“可以表示”与“,”!=“表示”非“,"=="表示”等于"),如果x是0或1,“return (3);”,返回值是3,也就是说,当x=0或x=1时,fun=3,并且退出“fun”函数。你可以类比一下数学的函数。
然后如果x的值不是0或1,比如你的“main”主函数中是“fun(9)”,所以,fun函数根据“if”语句判断x不是0或1,所以返回值是“x-fun(x-2);”。其实,“p=x-fun(x-2);”和“return p;”这2句完全可以合并为“return x-fun(x-2);”(当然fun函数第一行的"int p;"也要去掉)。这2句的意思是返回x-fun(x-2),这里的x=9没问题,可是fun(x-2)=?没事,这不又在调用fun函数了吗?(不过,这次的参数是“x-2”,以本题为例,就是7)……然后是fun(5),fun(3),fun(1),可以推出fun(9)的值了.你可能要问,这个调用会不会造成死循环?不会,除非你main主函数调用的参数为负数!,因为我们定义了2个“初始值”——fun(0)=fun(1)=3.
不好理解?那我就把你的fun函数写成数学函数,你就明白了:
/
| 3 (x=0,1);
fun(x)= |
| x-fun(x-2) (x>1,整数)
\

(没法打大括号,你明白就行)

温馨提示:答案为网友推荐,仅供参考
相似回答