楊輝三角以前在學習c語言時候,用迴圈很容易實現。由於剛剛接觸函式式語言,遞迴和迭代方式實現迴圈還沒深入我心。下意思的想用鍊錶來實現,但發現自己對scheme的鍊錶操作太不熟悉,總會出現這樣那樣子的無法自我解釋的問題。最後參考了@dennis_zane
的pascal實現,
dennis_zane
是把楊輝三角左對齊,然後根據座標之間的關係實現:(
pascal x y) ,其中x,y為座標,
(pascal x y) 的值為座標對應的楊輝三角數值。看了
dennis_zane
的實現以後,很慚愧自己沒有想到。想想其未最終列印出結果,那我來繼續完成其工作。當然也是用遞迴和迭代。
(define (pascal x y)執行結果的輸出截圖如下:(cond ((> y x) (display "error"))
((= x 1) 1)
((= x 2) 1)
((= y 1) 1)
((= x y) 1)
(else
(+ (pascal (- x 1) y) (pascal (- x 1) (- y 1))))))
;(pascal 3 2)
(define (display-blank-space n)
(if(> n 0)(begin (display " ")
(display-blank-space (- n 1)))))
(define (pascal-display x y n)
(cond ((and (<= x n) (= x y) (not (= y 1))) (begin (display(pascal x y))
(display "\n")
(pascal-display (+ x 1) 1 n)))
((and (<= x n) (= x y) (= y 1)) (begin (display-blank-space (- n x))
(display(pascal x y))
(display "\n")
(pascal-display (+ x 1) 1 n)))
((and (<= x n) (> x y) (not (= y 1))) (begin (display(pascal x y))
(display " ")
(pascal-display x (+ y 1) n)))
((and (<= x n) (> x y) (= y 1)) (begin (display-blank-space (- n x))
(display(pascal x y))
(display " ")
(pascal-display x (+ y 1) n)))
(else (begin (display "end! ")
(display n)
(display " rows were displayed")))))
(pascal-display 1 1 8)
SICP練習1 12生成帕斯卡三角形
這道練習的中文版翻譯有誤,原文是 write a procedure that computes elements of pascal s by means of a recursive process.譯文只翻譯了 它採用遞迴計算過程計算出帕斯卡三角形。這裡應該是 帕斯卡三角形的各個元素 才對。在...
楊輝三角 帕斯卡三角形(C語言)
楊輝三角,是二項式係數在三角形中的一種幾何排列。在歐洲,這個表叫做帕斯卡三角形。帕斯卡 1623 1662 是在1654年發現這一規律的,比楊輝要遲393年,比賈憲遲600年。楊輝三角是中國古代數學的傑出研究成果之一,它把二項式係數圖形化,把組合數內在的一些代數性質直觀地從圖形中體現出來,是一種離散...
帕斯卡三角形 python
題目出自python入門經典第六章課後題 解決思路如下 每一行開始與結尾人為插入0元素,便於計算,在最後輸出的時候不顯示就可以了 lines input input the lines while not lines.isdigit print please enter an integer lin...