[2021 Spring] CS61A 學習筆記 Homework 6: Scheme


hw06: https://inst.eecs.berkeley.edu/~cs61a/sp21/hw/hw06/#scheme-editor

CS 61A Scheme Specification: https://inst.eecs.berkeley.edu/~cs61a/sp21/articles/scheme-spec/

Scheme Built-In Procedure Reference: https://inst.eecs.berkeley.edu/~cs61a/sp21/articles/scheme-builtins/

Q2: Thane of Cadr

返回列表的第2、3個元素,參考題中給出的cddr即可。

(define (cddr s)
  (cdr (cdr s)))

(define (cadr s)
  'YOUR-CODE-HERE
)

(define (caddr s)
  'YOUR-CODE-HERE
)
(define (cddr s) (cdr (cdr s)))

(define (cadr s) (car (cdr s)))

(define (caddr s) (car (cdr (cdr s))))

Q3: Sign

用cond進行條件判斷。

(define (sign val) 
    (cond 
        ((< val 0) -1)
        ((= val 0) 0)
        (else 1)))

Q4: Pow

用cond和even? 進行冪的運算,可以先寫python版,再按照scheme語法來寫。

(define (square x) (* x x))

(define (pow base exp) 
    (cond 
        ((= base 1) 1)
        ((= exp 0) 1)
        ((even? exp) (square (pow base (/ exp 2))))
        (else (* base (square (pow base (/ (- exp 1) 2)))))))

python版:

def squares(x): return x * x 

def pows(base, exp):
    if base == 1: return 1
    if exp == 0: return 1
    if exp % 2 == 0:
        return squares(pows(base, exp // 2))
    else:
        return base * squares(pow(base, exp // 2))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM