今回は、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); } |