簡體   English   中英

方案-查找從-n到n的分數和

[英]Scheme - Finding the sum of fractions from -n to n

因此,我必須制作一個名為frac-sum的函數,將兩個函數從-n到n的分數之和作為f(n)/ g(n)作為分數,並將從-n到n的總和作為f( -n)/ g(-n)+ ... f(n)/ g(n)

它采用三個形式參數fg和n。

到目前為止,我已經可以正常運行了,但是最終卻陷入了遞歸循環,這意味着我的基本情況有問題:

    (define (negn n) (- (* n -1) 1))
    (negn 1)

    (define (frac-sum f g n)
      (cond ((= n (negn n)) 0)
            ((= (g n) 0) (+ 0 (frac-sum f g (- n 1))))
            ((+ (/ (f n) (g n)) (frac-sum f g (- n 1))))))

我用它來測試它應該輸出兩個:

(分數總和(lambda(x)(-x 1))(lambda(x)x)1)

沒有整數n ,語句n = (n * -1) - 1會成立。 這是函數無限循環的原因。

由於要在[-n, n]范圍內進行迭代,因此可以在函數中定義兩個值,然后遞歸增大下限或減小上限。 然后可以通過測試下限是否等於上限來終止該函數。

(define (frac-sum f g n)
  (let loop ((neg (- n)) (pos n) (acc 0))
    (cond
      ((= neg pos) acc)
      ((zero? (g neg))
       (loop (add1 neg) pos acc))
      (else
       (loop (add1 neg) pos (+ (/ (f neg) (g neg)) acc))))))

例如:

(frac-sum (lambda (x) (- x 1)) (lambda (x) x) 1)
=> 2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM