一个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/07/19 15:22:24
![一个c预言的题目、求这个程序的输出结果、麻烦说一下过程、谢谢了.#include fun (int x){ int p; if(x==0||x==1) return(3); p=x-fun(x-2); return p;}main( ){printf (](/uploads/image/z/13410415-55-5.jpg?t=%E4%B8%80%E4%B8%AAc%E9%A2%84%E8%A8%80%E7%9A%84%E9%A2%98%E7%9B%AE%E3%80%81%E6%B1%82%E8%BF%99%E4%B8%AA%E7%A8%8B%E5%BA%8F%E7%9A%84%E8%BE%93%E5%87%BA%E7%BB%93%E6%9E%9C%E3%80%81%E9%BA%BB%E7%83%A6%E8%AF%B4%E4%B8%80%E4%B8%8B%E8%BF%87%E7%A8%8B%E3%80%81%E8%B0%A2%E8%B0%A2%E4%BA%86.%23include+fun+%28int+x%29%7B+int+p%3B+if%28x%3D%3D0%7C%7Cx%3D%3D1%29+return%283%29%3B+p%3Dx-fun%28x-2%29%3B+return+p%3B%7Dmain%28+%29%7Bprintf+%28%22%25d%5Cn%22%2Cfun%289%29%29%3B%7D)
一个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)=3,fun(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).