一个c预言的题目这个程序的输出结果麻烦说一下过程谢谢了#include 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));}

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/06 00:53:47

一个c预言的题目这个程序的输出结果麻烦说一下过程谢谢了#include 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));}
一个c预言的题目这个程序的输出结果麻烦说一下过程谢谢了
#include 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));}

一个c预言的题目这个程序的输出结果麻烦说一下过程谢谢了#include 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(x) = x - fun(x-2)且fun(0)=3fun(1)=3求fun(9)的值.fun(9)=9- fun(7) //计算到这里要先等待fun(7)的计算成果才能持续往下计算 =9- (7- fun(5)) //而到了这一步则要等待fun(5)返回计算成果才能持续运算 =9- (7- (5- fun(3))) //同理等待fun(3)返回计算成果 =9- (7- (5- (3- fun(1)))) //碰到了fun(0)或fun(1)此时不消再递归了逐层向主调函数返回计算成果 =9- (7- (5- (3- 3)))) =7在fun(x)函数中当履行到p=x-fun(x-2)时当前fun(x)函数会挂起入栈等待fun(x-2)返回计算成果.而在fun(x-2)函数履行过程中又会被挂起入栈等待fun(x-4)函数返回成果...如斯来去直到碰见fun(0)或fun(1). 查看原帖>>