关于递归算法1

 

 

Q:小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币。
魔法机器1:如果投入x个魔法币,魔法机器会将其变为2x+1个魔法币
魔法机器2:如果投入x个魔法币,魔法机器会将其变为2x+2个魔法币
小易采购魔法神器总共需要n个魔法币,所以小易只能通过两台魔法机器产生恰好n个魔法币,小易需要你帮他设计一个投入方案使他最后恰好拥有n个魔法币。

 

Js实现:((1)选择Javascript(v8 6.0.0) (2)获取输入(注意:readline得到的是字符串,本例需要转化为数字) )

var n = parseInt(readline());
function
magic(n){ if (n <= 0) { return '';} if (n && n%2===1) { return magic((n-1)/2) + '1'; }else { return magic((n-2)/2) + '2'; } }
console.log(magic(n));

 

function floor(s) {
    var arr = [];
    for (var i = 1; i <= s.length; i=i+2) {
        if(s[i] ===s[i-1]) {
            arr.push(i); 
        }
    }
    return arr.length;
}

 

function DNA(s) {
    var reg = /([ATCG])*/g;
    var arr = s.match(reg);
    var len = 0;
    for (var i = 0; i < arr.length; i++) {
        if(arr[i]&&arr[i].length>len) {
            len = arr[i].length;
        }
    }
    return len;
}

 

function oddstring(s) {
    
   s = s.toLowerCase();
   var len = s.length;
   if(len>200||len<2) {return ;}
if (len%2 !==0) { s = s.substr(0,len-1); } len = s.length; var str1 = s.substr(0,len/2),str2 = s.substr(len/2,len); if (str1 === str2) { return len; }else { return oddstring(s.substr(0,len-2)); } }

 

 

 

 

posted @ 2017-11-20 20:51  echo2016  阅读(200)  评论(0)    收藏  举报