我想定义一个函数,它接受一个整数 n 并返回一个整数 n*,使得 n 和 n* 在从 1 到 n 的同一组整数中,并且该函数必须是双射的。
我尝试了以下
fun bij(n) =
let
val ls = zip(upto (1, n), List.rev(upto (1, n)))
val Tw_2 = fn(a, b) => b
in Tw_2(List.last(ls, n-1)) end;
但不幸的是,它为我所有的 n 值返回 1。我真的被困在这里了。谁能给我一些关于如何实现这一点的想法?
的行为bij
must 看起来像
bij(1) = 3
bij(2) = 2
bij(3) = 1