SICP 2 34多項式加法

2021-07-26 03:35:20 字數 2601 閱讀 6910

對於乙個多項式:

求值,我們可以化簡找出其規律,利用horner 規則化簡:

可以明顯看出多項式的遞迴規律:從an開始,(+ (* an x) a(n-1)),下乙個也是如此,直到a0。

之前建立的accumulate過程,也有相似的遞迴性,應該是一類過程,accumulate的原始定義:

(define

(accumulate op initial sequence)

(if (null? sequence)

initial

(op(car sequence)

(accumulate op initial (cdr sequence)))))

op 是對資料的操作,從簡單的加減乘除到複雜的自定義運算。

initial是初始資料,說明它是個什麼的累加,比如數或者表

sequence是待處理的資料

那麼結合此多項式的計算規律,對於多項式的計算可以抽象成**:

(define

(hover_eval x sequence)

(accumulate

(lambda

(this_coeff higher_terms)

(+ (*

x this_coeff) higher_terms))

0 sequence))

手動模擬線性遞迴過程:

(horner-eval

2(list13

0501))

(accumulate

(lambda

(this-coeff higher-terms)

?>)

0(list13

0501))(+1

(*2(accumulate

(lambda

(this-coeff higher-terms)

?>)

0(list30

501))))(+1

(*2(+3

(*2(accumulate

(lambda

(this-coeff higher-terms)

?>)

0(list05

01))))))(+1

(*2(+3

(*2(+0

(*2(accumulate

(lambda

(this-coeff higher-terms)

?>)

0(list50

1))))))))(+1

(*2(+3

(*2(+0

(*2(+5

(*2(accumulate

(lambda

(this-coeff higher-terms)

?>)

0(list

01))))))))))(+1

(*2(+3

(*2(+0

(*2(+5

(*2(+0

(*2(accumulate

(lambda

(this-coeff higher-terms)

?>)

0(list

1))))))))))))(+1

(*2(+3

(*2(+0

(*2(+5

(*2(+0

(*2(+1

(*2(accumulate

(lambda

(this-coeff higher-terms)

?>)

0'())))))))))))))(+1

(*2(+3

(*2(+0

(*2(+5

(*2(+0

(*2(+1

(*20))))))))))))(+1

(*2(+3

(*2(+0

(*2(+5

(*2(+0

(*2(+1

0)))))))))))(+1

(*2(+3

(*2(+0

(*2(+5

(*2(+0

(*21))))))))))(+1

(*2(+3

(*2(+0

(*2(+5

(*2(+0

2)))))))))(+1

(*2(+3

(*2(+0

(*2(+5

(*22))))))))(+1

(*2(+3

(*2(+0

(*2(+5

4)))))))(+1

(*2(+3

(*2(+0

(*29))))))(+1

(*2(+3

(*218))))(+1

(*2(+3

36)))(+1

(*239))(+1

78)79

多項式加法

題目內容 乙個多項式可以表達為x的各次冪與係數乘積的和,比如 現在,你的程式要讀入兩個多項式,然後輸出這兩個多項式的和,也就是把對應的冪上的係數相加然後輸出。程式要處理的冪最大為100。輸入格式 總共要輸入兩個多項式,每個多項式的輸入格式如下 每行輸入兩個數字,第乙個表示冪次,第二個表示該冪次的係數...

多項式加法

題目內容 乙個多項式可以表達為x的各次冪與係數乘積的和,比如 2x6 3x5 12x3 6x 20 現在,你的程式要讀入兩個多項式,然後輸出這兩個多項式的和,也就是把對應的冪上的係數相加然後輸出。程式要處理的冪最大為100。輸入格式 總共要輸入兩個多項式,每個多項式的輸入格式如下 每行輸入兩個數字,...

多項式加法

給定兩個多項式p x 與q x 通過鍊錶實現它們的加法。有若干組,每組有2個多項式。每組輸入時先輸入第1個多項式,再輸入第2個多項式。每組用若干對整數表示,依序每兩個相鄰的整數表示多項式的一項,分別是它的係數和冪。當輸入的冪為負數時,表示乙個多項式的結束。乙個多項式中各項的次序是隨機的。對每組中兩個...