自己寫了一個奇奇怪怪的遞回函式
#include<iostream>
using namespace std;
int i=0,j=0;
void dfs(int u);
void tfs(int u)
{
if(u>3)
{
return;
}
j++;
cout<<"j="<<j<<" "<<"u="<<u<<endl;//1
dfs(u+1);//2
cout<<u<<" "<<"x"<<endl;//3
tfs(u+2);//4
}
void dfs(int u)
{
if(u>3)
{
return;
}
i++;
cout<<"i="<<i<<" "<<"u="<<u<<endl;//5
dfs(u+1);//6
cout<<u<<" "<<"s"<<endl;//7
tfs(u+2);//8
}
int main()
{
dfs(0);
return 0;
}
運行結果:

運行程序分析:
開頭dfs(0),先執行5,輸出i=0 u=0,然后執行6,再執行呼叫的新的函式5,直到呼叫到第四個函式時候滿足u>3退出

然后呼叫的前三個新的函式執行下一步7,越晚呼叫的函式越早執行下一步

執行8,同樣越晚呼叫的函式越早執行下一步,只有u=1的時候,tfs(3)滿足!>3不會被return,執行1

執行2,u=4>3,return,下一步上一步中的函式執行3,并在下一步遞回4中回傳

這時候最開始的dfs(0)函式執行7,8,1,2,5,6,7,3

遞回函式步驟復雜,不容易描述出來具體步驟,大腦在壓堆疊的時候很難受,不過我們在做題的時候只需要設計好函式,并相信它可以完成任務就可以了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/506533.html
標籤:其他
下一篇:day37-IO流04
