-2
該代碼基本上計算nCr打印帕斯卡的三角形。如何將此遞歸函數轉換爲迭代版本?
#include <stdio.h>
int nCr(int n,int r){
if (r == 0 || r == n || n == 1 || n == 0){
return 1;
}
else{
return nCr(n-1,r) + nCr(n-1,r-1);
}
}
這個函數如何變成迭代版本?
我之前忘了提到這個,但是解決方案必須不使用列表,以某種方式將這個確切的遞歸邏輯轉換爲迭代邏輯。
只要想一想在每個遞歸步驟中會發生什麼,並實現一個類似這樣的循環。您可能需要一個商店來保存迭代數據的值。使用遞歸時,此數據存儲在堆棧中。快樂工程! –
在一張紙上繪製帕斯卡三角形。嘗試從開始「走」到具體的價值。在上述「步行」期間,考慮在每一步中你需要什麼樣的價值觀,以及這些價值觀何時完成了他們的目標並可以被拋棄。然後用一個循環和一些變量來寫這個步驟。 – StoryTeller