我在Scheme中进行编程任务,我们必须开发一种查找Happy Numbers的方法。我已经完成了肉(从数字n中找到了快乐的数字),但我在构建列表时遇到了问题。
这是我的代码:
(sosd num)
计算num
的快乐号码,(stop? num)
确定num
是否是预定列表中的递归号码。
(define (sspd_series num)
(if (stop? num)
(make-list num)
(append (make-list(sosd num)) (make-list(sspd_series (sosd num))))
)
)
(define (make-list num)
(cons num '())
)
但是,虽然我想要一个看起来像(1 2 3 4 5)
的列表,但我得到(1 (2 (3 (4 (5)))))
。我尝试过cons
代替append
而我得到了一些与众不同的东西,但不是我正在寻找的东西。
我做错了什么?
答案 0 :(得分:1)
假设正确实现了stop?
和sosd
,您只需构建一个正确的列表作为输出,为此使用cons
。这是如何:
(define (sspd_series num)
(if (stop? num)
(list (sosd num))
(cons (sosd num)
(sspd_series (sosd num)))))
您可以通过在过程开始时仅计算sosd
一次并将其存储在变量中来优化实现。留给读者练习。
答案 1 :(得分:1)
聪明的是找到一种以相反的顺序创建列表的方法。假设您从'()
开始'(3)
(cons 3 '())
'(2 3)
,(cons 2 '(3))
(define (my-reverse lst)
(let loop ((lst lst) (acc '()))
(if (null? lst)
acc
(loop (cdr lst) (cons (car lst) acc)))))
from django.conf.urls import url
from . import views
from django.contrib.auth.views import password_reset, password_reset_done
urlpatterns = [
url(r'^$', views.post_list, name='post_list'),
url(r'^login/$', views.user_login, name='user_login'),
url(r'^logout/$', views.user_logout, name='user_logout'),
url(r'^reset-password/$', password_reset, name='password_reset'),
url(r'^reset-password/done/$', password_reset_done, name='password_reset_done'),
url(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/(?P<slug>[\w-]+)/$', views.post_detail, name='post_detail'),
url(r'^(?P<post_id>\d+)/share/$', views.post_share, name='post_share'),
url(r'^(?P<tag_slug>[\w-]+)/$', views.post_list, name='post_list_by_tag'),
]
。这里的灵感是如何反转列表:
<div style="margin: 0 auto; width: 80%; background-color:magenta;display:flex;">
<div style="width:25%;display: inline-block;">
<img src="http://www.bjbzryl.com/data/out/7/780401.jpg" style="width:100%;">
</div>
<div style=" margin-left:2%; background-color:lime; flex: 1;">
<p style="float:left; display:inline-block; margin:2% 2% 2% 2%;">blah blah blah</p>
</div>
<div style="clear:both;"></div>
</div>