给定一个列表和一个数字 n,我尝试将一个列表拆分为两个单独的列表:一个列表为长度为 n 的列表,第二个列表是原始列表的其余部分。
这是我所拥有的:
(define (part lst i)
(if (> i 0)
(list (append (list (first lst)) (list (part (rest lst) (- i 1)))))
(append lst)))
Run Code Online (Sandbox Code Playgroud)
其中lst是输入的列表,i是数字。当我输入带有数字 2 的列表 '(1 2 3 4) 时,我返回的输出为: '((1 ((2 (3 4))))) 而不是我想要的 '((1 2 )(3 4))。
这是一项家庭作业,所以如果有人能指出我的问题所在的正确方向,我将不胜感激,并且因为这是一项硬件作业,所以我只允许使用简单的球拍功能。
编辑:
当我将代码更改为:
(define (part lst i)
(if (> i 0)
(append (list (first lst)) (list (part (rest lst) (- i 1))))
(append lst)))
Run Code Online (Sandbox Code Playgroud)
我得到的输出为 '(1 (2 (3 4)))。
可以将指向C中多维数组的指针简单地写为:
double *array;
Run Code Online (Sandbox Code Playgroud)
arrayn乘n矩阵在哪里?
然后,我可以访问该元素的行i,列j,由array[i][j]?
还是有双指针这样的东西?