Re: [問卦] 寫程式會用遞迴 大概是什麼程度?

作者: utomaya (烏托馬雅)   2023-02-14 22:25:35
※ 引述《jason851124 (YeeeEX)》之銘言:
: 乳提
: 在寫code的時候
: 常用迴圈來設條件 讓程式來達成想要的目的
: 如for, while, do while
: 但有另一種比較進階的概念叫遞迴
: 就如同全面啟動一樣 一層一層的進入夢靨
: 一層一層的呼叫自身函數 最後在慢慢逃脫
: 這種架構在撰寫的時候 邏輯要更清晰
: 想問可以習慣寫遞迴的人
: 大概是什麼等級阿? 有掛?
以前在C語言板看過一個簽名檔
一個在程式語言界有名的人說了一句話:「遞迴只在天上有,凡人應該用迴圈」
可能對方是名人,大家都奉為圭臬
我一點都不同意
舉個簡單例子好了
一個陣列a[]取任意3個,用迴圈怎麼寫?
for(int i=0;i<a.size();i++)
{
for(j=i+1;j<a.size();j++)
{
for(k=j+1;k<a.size();k++)
{
//.....
//以下做特殊處理
}
}
}
那如果取20個咧,不就寫到昏倒
以前在冼鏡光的名題精選百則<使用C語言>有提到一個方法,不用遞迴,也不用上述作法
列出K個元素的子集
可是非常難懂,是60年代的計算機科學家就發明出來的方法
因為非常難懂(至少對我),一陣子沒讀又忘了
可是這種陣列a[]取任意n個,用遞迴來做非常好寫
我都這樣寫
void recur(int tl, int level, int start)
{
if(level==0)
{
//以下做特殊處理
// ......
return;
}
for(int i=start;i<a[].size();i++)
{
recur(tl,level-1,i+1);
}
}
在最後一層幹掉就好
我在ProjectEuler很常用到這種遞迴

Links booklink

Contact Us: admin [ a t ] ucptt.com