我必须解决函数式编程中的练习。我通过迭代方案解决,我想使用递归但不知道转换?任何人都可以帮我k吗?函数式编程和逻辑?
标题:N和N的人,我会做的工作表现j A [i] [j]。找到计划的工作任务,以便获得最佳表现?
这里是代码使用循环圈
(define (Bai15 N)
(define i 0)
(define j 0)
(define k 0)
(define t 0)
(define ii 0)
(define jj 0)
(define dem 0)
(define MaTrix (make-vector N))
(define Result (make-vector N))
(define Test (make-vector N))
(define Max 0)
(display "a.Nhap ma trận X[1..N][1..N]:")
(newline)
(newline)
(while (< i N)
(set! (vector-ref MaTrix i) (make-vector N))
(set! i (+ i 1))
)
(set! i 0)
(while (< i N)
(set! k (vector-ref MaTrix i))
(while (< j N)
(display "X[")
(display i)
(display "][")
(display j)
(display "]= ")
(set! (vector-ref k j) (read))
(set! j (+ j 1))
)
(newline)
(set! j 0)
(set! i (+ i 1))
)
(newline)
(set! i 0)
(set! j 0)
(while (< i N)
(set! k (vector-ref MaTrix i))
(while (< j N)
(display (vector-ref k j))
(display " ")
(set! j (+ j 1))
)
(newline)
(set! j 0)
(set! i (+ i 1))
)
(set! i 0)
(while (< i N)
(set! (vector-ref Result i) -1)
(set! i (+ i 1))
)
(set! i 0)
(while (< i N)
(set! (vector-ref Test i) -1)
(set! i (+ i 1))
)
(set! i 0)
(while (< i N)
(display (vector-ref Test i))
(set! i (+ i 1))
)
(newline)
(set! k 0)
(set! i 0)
(set! j 0)
(set! t 0)
(set! dem 0)
(while (< t N)
(if (and (not (= t 0)) (= i 0))
(set! jj t)
(set! jj 0))
(while (>= (vector-ref Test jj) 0)
(set! jj (+ jj 1))
)
(display "jj: ")
(display jj)
(newline)
(display "i: ")
(display i)
(newline)
(set! k (+ (vector-ref (vector-ref MaTrix i) jj) k))
(display "k: ")
(display k)
(newline)
(set! (vector-ref Test jj) i)
(set! ii 0)
(display "Test: ")
(while (< ii N)
(display (vector-ref Test ii))
(display " ")
(set! ii (+ ii 1))
)
(newline)
(set! dem (+ dem 1))
(if (= dem N)
(begin
(if (> k Max)
(begin
(set! Max k)
(display "Max: ")
(display Max)
(newline)
(set! ii 0)
(display "Result: ")
(while (< ii N)
(set! (vector-ref Result ii) (vector-ref Test ii))
(display (vector-ref Result ii))
(display " ")
(set! ii (+ ii 1))
)
(newline)
(set! i 0)
(while (< i N)
(set! (vector-ref Test i) -1)
(set! i (+ i 1))
)
(set! i 0)
(set! dem 0)
(set! k 0)
(set! t (+ t 1))))
(begin
(set! i 0)
(while (< i N)
(set! (vector-ref Test i) -1)
(set! i (+ i 1))
)
(set! i 0)
(set! dem 0)
(set! k 0)
(set! t (+ t 1))))
(begin
(set! i (+ i 1))
))
)
(newline)
(display "Divide the work plan: ")
(newline)
(set! i 0)
(while (< i N)
(display "Job ")
(display (+ i 1))
(display " - People ")
(display (+ (vector-ref Result i) 1))
(display " work")
(newline)
(set! i (+ i 1))
)
(display "Effective: ")
(display Max)
)
我想用递归和逻辑编程
我认为在你描述问题时可能会有一些错误的翻译,因为这句话没有任何意义:“标题:N和N的人,我会做的工作表现j A [i ] [j]。“也许更长的描述会更清晰地翻译? – IMSoP
这看起来大多像是另一个程序的逐行翻译。 “一个坚定的程序员可以用任何语言编写Fortran” - Ed Post。 – molbdnilo