2020-05-28 Algebraic Data Types
作者:
苦庭 | 来源:发表于
2020-05-28 18:17 被阅读0次
https://www.codewars.com/kata/546d245dddbcbd291c00106e
My answer / AC
function natToInt(nat){
return nat===zero ? 0 : 1+natToInt(nat());
}
function intToNat(int) {
if(int===0) return zero;
return succ(intToNat(int-1));
}
function add(nat1, nat2) {
if(nat1===zero) return nat2;
return add(nat1(), succ(nat2));
}
function mul(nat1, nat2) {
if(nat1===zero) return zero;
return add(nat2, mul(nat1(), nat2));
}
function compareTo (nat1, nat2) {
if(natToInt(nat1) > natToInt(nat2)) return 1;
else if(natToInt(nat1) < natToInt(nat2)) return -1;
return 0;
}
function toString(nat) {
if(nat===zero) return "zero";
return "succ("+toString(nat())+")";
- 一开始老说我
RangeError
后来发现是不能够在natToInt(nat, acc=1)
里面加上后面那个acc=1,我也不知道为什么,反正内存就因为这个爆了,可能是这个累加器会占很多的位置吧。
- 很好的递归训练题,可惜已经被弃置了
Recap
本文标题:2020-05-28 Algebraic Data Types
本文链接:https://www.haomeiwen.com/subject/fvnaahtx.html
网友评论