| 今回は、for文とwhile文を封印して「制限プログラム」をやってみます。 今回は、指定した自然数を2進法に直して表示します(toString()も禁止)。 | ||||
| for文使って適当に書いたコード | ||||
function Main(n){
for(var i=0;i<Math.pow(2,i+1)>=n;i++){}
for(var k=i,t=n,r='';k>=0;k--){
if(t>=Math.pow(2,k)){
t-=Math.pow(2,k);
r+='1';
}
else
r+='0';
}
alert(r);
}
| ||||
| これを制限プログラムすると | ||||
function Main(n){
var F=(
f=function(i,n){
return Math.pow(2,i+1)<=n?f(i+1,n):i
},
f(0,n)
);
var r=(
g=function(k,t,r){
if(t>=Math.pow(2,k)){
t-=Math.pow(2,k);
r+='1';
}
else{
r+='0'
}
k--;
return k>=0?g(k,t,r):r
},
g(F,n,'')
);
alert(r);
}
|