簡體   English   中英

球拍方案嵌套定義

[英]Racket Scheme nested define

我的目標是編寫通過給定хn計算總和的方法:

S = 1 + x / 1! + x2 / 2! + ... + xn / n!

我的代碼:

#lang racket
(define (func n)
  (define (n1! f)
    (if (= f 0) 1
        (* f (n1! (- f 1)))))
  (define (iter i res)
    (if (= i n) (+ 1 res)
       (iter (+ i 1) (/ i (n1! i))))))
(func 3)

有我不明白的錯誤。 它說:

begin (possibly implicit): no expression after a sequence of internal definitions in:
  (begin (define (n1! f) (if (= f 0) 1 (* f (n1! (- f 1))))) (define (iter i res) (if (= i n) (+ 1 res) (iter (+ i 1) (/ i (n1! i))))))
  (define (n1! f) (if (= f 0) 1 (* f (n1! (- f 1)))))
  (define (iter i res) (if (= i n) (+ 1 res) (iter (+ i 1) (/ i (n1! i)))))

我做錯了什么?

您需要在兩個定義之后添加一個表達式,以便func實際上可以執行某些操作。 當前,您的代碼等效於(define (func n))

您的代碼是這個

(define (func n)
  (define (n1! f)
    (if (= f 0) 1
        (* f (n1! (- f 1)))))
  (define (iter i res)
    (if (= i n) (+ 1 res)
       (iter (+ i 1) (/ i (n1! i))))))

你需要這樣做

(define (func n)
  (define (n1! f)
    (if (= f 0) 1
        (* f (n1! (- f 1)))))
  (define (iter i res)
    (if (= i n) (+ 1 res)
       (iter (+ i 1) (/ i (n1! i)))))
  (iter n 0))

暫無
暫無

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

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