我正在尝试在Scheme中编写一个程序来使用快速幂算法/递归来计算幂函数的结果。该算法应该是正确的,但我的语法在某些地方是错误的。程序可以编译,但当我输入一个基数和指数进行测试时,Dr. Racket 冻结并耗尽内存。很难找到有关(偶数?)函数应如何出现在方案代码中的在线示例。我认为这可能会破坏我的语法。计划新手,因此任何帮助将不胜感激。
(define (powFun base exp)
(if ( = exp 0) //base case
1
(even? exp //if exp is even
(*
(powFun base ( / exp 2))
(powFun base ( / exp 2))
)
(*
(powFun base (- exp 1) ) // else if exp is odd
base
)
)
)
Run Code Online (Sandbox Code Playgroud)
)