Java 遞迴解決 "只能兩數相乘的計算機計算x^y" 問題

來源:互聯網
上載者:User

標籤:遞迴


/** * 求一個數的乘方 * 求x^y,y是一個正整數。設計算機只能計算兩數相乘,不能一次計算n個數相乘。 * 知:2^5=(2^2)^2*2;   2^6=(2^2)^3=((4)^2)*4;  2^8=(2^2)^4= (4^2)^2= 16^2 * 得到規律:x^y= (x^2)^(y/2),定義a=x^2,b=y/2, 則得到形如: x^y= a^b; *     y如果是奇數,則分解的最後還要再乘以a(如上面2^6分解成4^3時):x^y=a^b*a. *      * 用遞迴來解:那麼每次x都傳入一個新的值,即是a;y值倍減,即是b *    * @author stone * @date   2015-7-2 上午11:31:53 */public class Power {private static long pow(long x, long y) {if (x == 0 || x == 1) {return x;}long tx = 0;long ty = 0;if (y > 1) {ty = y / 2;tx = x * x;System.out.println(tx);if (y % 2 == 0) {return pow(tx, ty);} else {return pow(tx, ty) * x;}} else {return x;}}public static void main(String[] args) {long result = pow(2, 10);System.out.println(result);}}


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Java 遞迴解決 "只能兩數相乘的計算機計算x^y" 問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.