标签: racket

SICP 练习 1.8 - 为什么我的函数没有终止?

我正在尝试实现立方根的牛顿法,但我的函数似乎挂起。我的代码与书中显示的平方根代码几乎相同,并根据improve需要修改了函数。

这是我的代码...

(define (cube-root x)
  (cube-root-iter 1.0 x))

(define (cube-root-iter guess x)
  (if (good-enough? guess x)
      guess
      (cube-root-iter (improve x guess) x)
      )
  )

(define (good-enough? guess x)
  (< (abs (- (* guess guess) x)) 0.001))

(define (improve x guess)
  (/ (+ (/ x (* guess guess)) (* 2 guess)) 3)
  )
Run Code Online (Sandbox Code Playgroud)

我进行了独立测试improvegood-enough?他们似乎给出了正确的答案。有人知道为什么我的代码不终止吗?

我在 Racket 中对sicp包进行此操作,以防产生任何影响。

scheme sicp racket

1
推荐指数
1
解决办法
122
查看次数

Scheme初学者问题

我想在Dr.Scheme中提出以下声明:

{with {x {+ 5 5}} {+ xx}}

但是我收到一个错误:

expand:模块中的未绑定标识符:with

有谁可以帮助我?谢谢.

scheme racket

0
推荐指数
1
解决办法
307
查看次数

在球拍中的gensym

我知道gensym可以生成符号,但似乎有一个基数的全局计数器,它可能非常大,例如,(define s (gensym 's))s可以最终得到s12345.我想知道是否有办法重置计数器,生成的数字可能很小?喜欢s14

scheme racket

0
推荐指数
1
解决办法
1427
查看次数

Scheme - 需要替换list元素的值

我的列表抓取用户输入,并创建一个列表 - 此列表以字符为单位.

我想能够检查是否(car myList)是一个性格像#\1或者#\2,然后更改名单的车进1或2.

我正在使用DrRacket.

到目前为止,这个问题一直试图打电话给(set! (car myList) 1)(list-set! (car myList) 1 )

两者都是我环境中未定义的引用.

我刚刚开始参与计划,参加大学任务.

如果有人有时间,任何帮助将不胜感激

谢谢

variables scheme element list racket

0
推荐指数
2
解决办法
5947
查看次数

计划程序冻结,没有例外

好的,我正在大学上学这门课程,我们刚刚完成了第一次任务.我遇到了这个奇怪的事情.有时程序会冻结,绝对不做任何事情而不给我任何形式的警告,为什么这是......

采取以下程序:

(define (calc-week-day y1 m d w y2) ; anta y2 > y1
  (define (days-between-months m1 m2 y)
    (if (= m1 m2)
        0
        (+ (month-length y m1) (days-between-months (+ m1 1) m2 y))))
  (define (days-between-years y1 y2)
    (if (= y1 y2) 
        0
        (+ (year-length y1) (days-between-years (+ y1 1) y2))))
  (define (days-til-months-end d m y)
    (- (month-length y m) d))
  (define (calculate-day day offset)
    (cond ((> day 6) (calculate-day 0 (- offset 1)))
          ((= offset 0) day)
          (else (calculate-day …
Run Code Online (Sandbox Code Playgroud)

scheme racket

0
推荐指数
1
解决办法
260
查看次数

如何在同一行中打印3个字符串?

我有一个字符串列表kumo.我打印三个字符串.我在三条线上得到它们.我希望它们在一行上用空格分隔.我使用以下代码:

(display (first kumo))

(display (fourth kumo)) 

(display (second kumo))
Run Code Online (Sandbox Code Playgroud)

要么

(printf "~a~a~a" (first kumo)(fourth kumo)(second kumo))
Run Code Online (Sandbox Code Playgroud)

racket

0
推荐指数
1
解决办法
3318
查看次数

如何使用球拍代码删除文件?

我想用球拍删除文件.我正在使用以下代码.

 (delete-file c://foo.txt)
Run Code Online (Sandbox Code Playgroud)

我收到了这条消息.

reference to an identifier before its definition:
c://foo.txt
Run Code Online (Sandbox Code Playgroud)

racket

0
推荐指数
1
解决办法
178
查看次数

计划/球拍中是否有功能可用于检查数字是否在数字范围内

方案/球拍中的功能是什么,可用于检查实数是否在给定的数字范围内。

scheme range racket

0
推荐指数
1
解决办法
845
查看次数

Scheme博士的递归

我正在制作一个简单的代码,使用递归来打印列表的元素:

(define (printList list)
  (if (empty? list)
      '()
      (begin
        (display (car list))
        (printList (cdr list)))))
Run Code Online (Sandbox Code Playgroud)

它确实有效,但我想知道是否有一种不打印空列表的方法.当我用(printList'(1 2 3 4))运行我的程序时,我得到了:

1 2 3 4()

有办法解决这个问题吗?

谢谢

scheme racket

0
推荐指数
1
解决办法
74
查看次数

在Racket中将两个列表相乘

我使用Racket以相同的长度乘以列表.到目前为止,我尝试过:

(define (multiply-list a b)
  (if ([(empty? a) (empty)])
      else (cons(*car(a)car(b)))
      cdr(a) cdr(b)))                  
Run Code Online (Sandbox Code Playgroud)

我无法理解Racket的语法.我想更新列表cdr.但我不能把它弄清楚a并且b是清单.

scheme list racket

0
推荐指数
1
解决办法
1832
查看次数

标签 统计

racket ×10

scheme ×8

list ×2

element ×1

range ×1

sicp ×1

variables ×1