Scheme 函数 returns 列表中的奇数元素反向
Scheme function that returns the odd-numbered elements from a list in reverse
我必须为我的程序创建一个递归 Scheme 函数 class,它将获取列表中的所有奇数元素,然后 return 它们以相反的顺序排列。
我有一个函数用于反转列表,另一个函数用于获取奇数元素,但无法弄清楚如何将两者组合成一个 new 函数,因为它们都是递归的。
它必须是一个函数,它不调用除自身以外的任何函数。它不能调用 odd
或 reverse
,并且它必须具有与调用 both 相同的功能。
奇函数:
(define (odd lst)
(if (null? lst)
'()
(cons (car lst)
(odd (cddr lst)))))
反向函数:
(define (reverse lst)
(if (null? lst)
'()
(append (reverse (cdr lst))
(list (car lst)))))
如有任何帮助,我们将不胜感激!
您的 reverse
大多数情况下都符合您的要求,除了它在结果中还包含 even-numbered 元素。
例如,如果您尝试用 reverse
反转 (1 2 3 4 5 6 7)
,它将进行 递归调用 来反转列表 (2 3 4 5 6 7)
;如果你能让它从 that 递归调用中去掉 2
,那么你在这里的状态会很好(尽管你必须处理一个边缘情况你很快就会发现)。
我必须为我的程序创建一个递归 Scheme 函数 class,它将获取列表中的所有奇数元素,然后 return 它们以相反的顺序排列。
我有一个函数用于反转列表,另一个函数用于获取奇数元素,但无法弄清楚如何将两者组合成一个 new 函数,因为它们都是递归的。
它必须是一个函数,它不调用除自身以外的任何函数。它不能调用 odd
或 reverse
,并且它必须具有与调用 both 相同的功能。
奇函数:
(define (odd lst)
(if (null? lst)
'()
(cons (car lst)
(odd (cddr lst)))))
反向函数:
(define (reverse lst)
(if (null? lst)
'()
(append (reverse (cdr lst))
(list (car lst)))))
如有任何帮助,我们将不胜感激!
您的 reverse
大多数情况下都符合您的要求,除了它在结果中还包含 even-numbered 元素。
例如,如果您尝试用 reverse
反转 (1 2 3 4 5 6 7)
,它将进行 递归调用 来反转列表 (2 3 4 5 6 7)
;如果你能让它从 that 递归调用中去掉 2
,那么你在这里的状态会很好(尽管你必须处理一个边缘情况你很快就会发现)。