为什么我的列表反向功能只能自己工作,而不能在另一个功能中工作?

用户名

我试图在另一个函数中调用我编写的反向函数(当单独调用时可以工作),但是输出错误的结果。

我正在编写一个程序以获取关于二元多项式的x的导数。我有一个名为poly_derx的主要函数,它将调用我的两个辅助函数reverse_listmult_by_index

(define (mult_by_index list_1)
  (if (null? list_1)
      list_1
      (map * list_1 (range (length list_1)))))

(define (reverse_list list_1)
  (if (null? list_1)
      list_1
      (append(reverse (cdr list_1)) (list (car list_1)))))

(define (poly_derx list_1)
  (if (null? list_1)
      list_1
      (reverse_list(cons (mult_by_index (car list_1)) (poly_derx (cdr list_1))))))

(poly_derx `( (1) (1 2 3) () (3)))

同样,我的3个函数可以正常工作,直到poly_derx中添加reverse_list为止另外,我知道有一个反向内置函数,但是我也遇到同样的问题。

在这一点上,我唯一想做的就是尝试在函数的不同点调用反向,但我对工作一无所知。

除夕夜

您的问题取决于您是否reverse处于默认情况下,并且从头到尾为每个子列表调用它。因此(poly_derx '(1 2 3))成为(reverse_list (cons res1 (reverse_list (cons res2 (reverse_list res3 (reverse_list '())))))您只需要反转最终结果。您可以使用助手来做到这一点:

(define (poly_derx list_1)
  (define (helper list_1)
    (if (null? list_1)
        list_1
        (cons (mult_by_index (car list_1)) (helper (cdr list_1)))))

  (reverse_list (helper list_1)))

同样,由于列表是从头到尾创建的,并且是从头到尾进行迭代的,因此您可以使用它来反转帮助器中的列表。

(define (poly_derx list_1)
  (define (helper list_1 result)
    (if (null? list_1)
        result
        (helper (cdr list_1) (cons (mult_by_index (car list_1)) result))))

  (helper list_1 '()))

因此请注意,您不能为每个迭代应用一次要执行的过程。它将产生意想不到的结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么传入的参数只能在一个地方工作而不能在另一个地方工作?

为什么我不能使用此功能在Qt框架中打开另一个进程?

为什么 Javascript addEventlistener 不能在另一个 addEventlistener 中工作

为什么我不能在Apache的POI一个工作簿链接到另一个?

为什么我的Stacknavigator只能在一个屏幕上工作而不在另一个屏幕上工作?

为什么我的列表冲销只能在一个方向上正常工作?

为什么这些反向列表功能之一比另一个更快?

为什么悬停不能在包含另一个div的div上工作?

为什么扩展功能在另一个模块中不可见?

按钮功能不能像另一个功能一样工作?

为什么我不能在另一个类中调用静态方法?

为什么我不能在另一个文件中重载<<操作符?

为什么我不能直接使用不在功能后面的另一个表中的列?

为什么我不能在工作目录中创建一个新文件?

为什么.each只能为一个班级名称工作,而不能为另一个班级名称工作?

两个Cython功能;为什么一个工作,另一个给NameError?

为什么不能在另一个函数中定义一个函数?

C#-为什么我不能在另一个类中更改我的int变量?

绑定不能在另一个类中工作

为什么动画功能在动画结束时隐藏另一个div?

激活另一个工作簿并在该工作簿中执行功能

为什么我不能在 ReactJS 中的另一个标签之外使用 <hr/> 标签?

如果函数是对象,为什么我不能在 JS 中的另一个函数内部调用函数?

Java脚本中的多个功能本身可以单独工作,但不能在一个脚本中工作

为什么我的Teams机器人只能在一对一的聊天中工作,而不能在网上论坛中工作?

为什么此代码只能在一个平台上运行而不能在另一个平台上运行?

exec为什么不能在具有子功能的功能中工作?

BeautifulSoup - 我不明白为什么当它在另一个 URL 上正常工作时,我不能让“内容”属性在我的 URL 上工作

从另一个文件中grep一个文件只能以一种方式工作。为什么?