SICP 電腦程式的構造和解釋 1.16 迭代法對數計算B的N次方

來源:互聯網
上載者:User

標籤:sicp   lisp   迭代   scheme   java   



1.16 迭代法計算B的N次方

先是Java實現的遞迴法和迭代法:

public class Test {    public static void main(String args[]){        int ex,ey;        ex = expt(122,4);        ey = expt_iter(122, 4, 1);        System.out.println(ey);        System.out.println(ex);    }    //遞迴    static int expt(int b,int n){        int sum;        if(n == 0)            return 1;        else        {            sum = (expt(b,(n-1)))*(b);            return sum;        }    }    //迭代    static int expt_iter(int b, int counter,int product){        int sum;        if(counter == 0){            return product;        }        else        {            sum = expt_iter(b, (counter-1), (b*product));            return sum;        }    }}


再是Scheme的對數迭代:

#lang racket;;N是偶數:b^n = (b^(n/2))^2(define (square x) (* x x));定義乘積函數(define (fast-expt b n);篩選  (expt-iter b n 1))(define (expt-iter b n a)  (cond ((= n 0) a);當n= 0,值為1       ((even? n)(expt-iter (square b)(/ n 2) a));判斷是否為偶數  ((odd? n)(expt-iter b (- n 1)(* b a)))));判斷是否為奇數(define (even? n)  (= (remainder n 2) 0))(fast-expt 2 15);;N是奇數:b^n = b*b^(n-1)




SICP 電腦程式的構造和解釋 1.16 迭代法對數計算B的N次方

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.