2011年6月1日 星期三

Java Native Interface (JNI) Android算數篇(使用NDK) -- Fibonacci Sequence

籠子裡有一對新生的兔子。假設每對兔子每個月會生出一對兔子,但新生的兔子要滿兩個月才能生出下一代兔子,則一年之後,會有多少對兔子?


費波那西數列(Fibonacci Sequence),又譯費波拿契數、斐波那契數列、費氏數列、黃金分割數列。
費波那西數列由 0 和 1 開始,之後的費波那西係數就由之前的兩數相加。
前幾個費波那西係數是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946,………………

大家放心,今天不是來討論數學況且數學不太認識我,這次是將Fibonacci用JNI方式實作在Android上。


上篇JNI使用時機中說明: "JAVA程式當中的一部分代碼對效率要求非常高"的部分,網路上有一個相當完整的範例在此分享一下。
Source:
http://marakana.com/static/tutorials/Fibonacci.zip
http://marakana.com/static/tutorials/Fibonacci.apk


以下是程式內容概要說明:
Java部分:


C 部分:


程式其他的細節部分請參照鏈結的程式碼說明,執行結果如文章開始的第一個畫面。

參考:
Using NDK for Performance - Dalvik Versus Native
http://marakana.com/forums/android/examples/96.html

Learning Android : Chapter 15. Native Development Kit (NDK)
http://ofps.oreilly.com/titles/9781449390501/NDK.html

1 則留言: