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)