如何用簡單的非遞歸循環編寫Ackermann function?簡單循環Ackermann函數
4
A
回答
2
這裏是一個可能的實現:
import java.util.ArrayList;
public class LinearAckermann {
static ArrayList<Long> mList = new ArrayList<Long>();
public static long ackermann(long m, long n) {
while (true) {
if (m == 0) {
n += 1;
if (mList.isEmpty()) {
return n;
} else {
int index = mList.size() - 1;
m = mList.get(index);
mList.remove(index);
}
} else if (n == 0) {
m -= 1;
n = 1;
} else {
mList.add(m - 1);
n -= 1;
}
}
}
public static void main(String[] args) {
System.out.println(ackermann(4, 1));
}
}
它採用mList
,而不是一個堆棧持有待審批工作;當堆棧變空時,它可以返回累計值。
相關問題
- 1. Ackermann函數和遞歸
- 2. haskell - hyperoperation(ackermann)函數,tetration
- 3. 簡單WHILE循環
- 4. jQuery簡單循環
- 5. C#循環單向函數
- 6. 簡單的遊戲循環不循環?
- 7. perl foreach循環數組,簡單問題
- 8. datastage中的簡單循環
- 9. JMeter簡單嵌套循環
- 10. 簡單的循環輸出
- 11. 簡單的JavaScript循環+ jQuery
- 12. 簡單循環查詢
- 13. 簡單的foreach循環
- 14. JavaScript簡單的循環
- 15. Python - 雖然循環簡單
- 16. 簡單的循環編程
- 17. 簡單的JavaScript循環
- 18. 簡單的循環長度
- 19. 如何修復簡單C++函數中的無限循環?
- 20. 循環函數bash
- 21. 循環jQuery函數
- 22. SQL /函數循環
- 23. sql循環函數
- 24. 循環迭代函數x次循環
- 25. AngularJs中的循環複雜性如果循環很簡單
- 26. 將簡單的for循環轉換爲while循環?
- 27. Jquery模板中的簡單循環/循環
- 28. Python簡單的嵌套循環
- 29. C++簡單循環緩衝區隊列
- 30. 遞歸或簡單的PHP循環
這是什麼樣的作業? – 2011-04-09 13:19:46
@亨克:不是作業,只是對簡單循環的表現力感到好奇。 – banx 2011-04-09 13:25:03