[英]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.