Matrix (方案)如何在矩阵中添加元素?
此函数用于查找每行的总和并将其放入列表中。我原以为这样做行得通,但事实并非如此。它给了我一个奇怪的输出 比如,如果我有一个矩阵,它有两行两列1,它会返回:Matrix (方案)如何在矩阵中添加元素?,matrix,scheme,Matrix,Scheme,此函数用于查找每行的总和并将其放入列表中。我原以为这样做行得通,但事实并非如此。它给了我一个奇怪的输出 比如,如果我有一个矩阵,它有两行两列1,它会返回: (2 . 1) 与此相反: (2 2) 帮忙 您应该调用(循环(+r1)0)而不是调用(add1r)。注:此建议正确;然而,您的代码中可能还有其他错误,特别是使用matrix ref调用进行的计算看起来不会累加一行。通过使用两行以上的矩阵进行测试,可以看出这一点 这里有一个修正: (define (sum mat) (let loop
(2 . 1)
与此相反:
(2 2)
帮忙
您应该调用(循环(+r1)0)而不是调用(add1r)
。注:此建议正确;然而,您的代码中可能还有其他错误,特别是使用matrix ref调用进行的计算看起来不会累加一行。通过使用两行以上的矩阵进行测试,可以看出这一点
这里有一个修正:
(define (sum mat)
(let loop ((r 0) (c 0) (s 0) (a '()) ;; row, col, sum, ans
(cond ((>= r (matrix-rows mat)) (reverse a))
((>= c (matrix-cols mat)) (loop (+ r 1) 0 0 (cons s a)))
(else (loop r (+ c 1) (+ s (matrix-ref mat r c)) a)))))
(define (sum mat)
(let loop ((r 0) (c 0) (s 0) (a '()) ;; row, col, sum, ans
(cond ((>= r (matrix-rows mat)) (reverse a))
((>= c (matrix-cols mat)) (loop (+ r 1) 0 0 (cons s a)))
(else (loop r (+ c 1) (+ s (matrix-ref mat r c)) a)))))