小编use*_*123的帖子

Scheme if语句

我一直在尝试编写返回矩阵转置的函数.所以输出的例子就是,(transpose (list '(1 2) '(4 5))) ;==> ((1 4) (2 5)) 这是我的功能:

(define transpose
  (lambda (m1)
    (if (null? (cadr m1))
        null
        (list (indiv (car m1) (cadr m1)) (transpose (rest m1)))))) 


(define indiv 
  (lambda (l1 l2)
    (if (empty? l1)
        null
        (list (list (car l1) (car l2)) (indiv (rest l1) (rest l2))))))
Run Code Online (Sandbox Code Playgroud)

indiv函数负责行递归,而transpose调用indiv函数来获取转置.我的问题是为什么不能 (if (null? (cadr m1))检查我是否到达了矩阵的最后一行?有没有办法在计划中检查这个?我不想用另一种方法来解决这个问题,我只是想知道这是否可行,如果是,那么如何?

recursion scheme if-statement racket

1
推荐指数
1
解决办法
367
查看次数

标签 统计

if-statement ×1

racket ×1

recursion ×1

scheme ×1