本帖最后由 mingfish2 于 2010-09-27 12:18:04 编辑

解决方案 »

  1.   

    不知道你要算法,还是如何存放数据。
    算法的话,就是分割整数,用递归,对整数n分成n1和n2,然后同样的方法分割n1和n2。
    数据存放的话function hello(){
            var y= parseInt(Math.random()*4+2); //2,3,4,5
            var arr=[[1,2,2],[1,1,1,1,1],[2,3]];
            arr= y==5?[[1,2,2],[1,4],[1,1,3],[1,1,1,1,1],[2,3]]:
            y==4?[[1,3],[2,2],[1,1,2],[1,1,1,1]]:
            y==3?[[1,2],[1,1,1]]:[1,1];
        }
      

  2.   


    <html>
    <head>
    <script language="javascript" type="text/javascript"> function hello(){
           // var y= parseInt(Math.random()*4+2); //2,3,4,5

            var arr=new Array();
    var num=0;
    var i=1;
    var j=1;
    var k=1;
    var y=3

    for( i=0;i<=y;i++)
     {

         for( j=0;j<=y;j++)
         {
         for( k=0;k<=y;k++)
                  {

                    if((i+j+k)==y)
      {

       arr[num]=i+","+j+","+k;
       num++;
      }

             }
      

     }

         }
           for(var tt=0;tt<arr.length;tt++)
     {
       
         alert(arr[tt]);
       }
        }</script>
    </head>
    <body>
    <button onclick="hello();">hello</button>
    </body>
    </html>
    随即出来的数字是多少就有多少层循环  再把符合条件的添加进数组  
    还有 你的规则貌似有问题  
      

  3.   

    谢谢funfun5433,不过结果总是只有【a,b,c】3个孩子,没有【1,4】或【1,2,1,1】....
      

  4.   


    <html><body>
    <script type="text/javascript">
    function hello(){
    var arr = [], ret = [], y = parseInt(Math.random()*4 + 2);
    (function(n){
    for(var i = 1; i <= n; i++){
    arr.push(i);
    if(i != n ) arguments.callee(n - i);
    if(i == n && arr.length > 1) ret.push(arr.join(" "));
    arr.pop();
    }
    })(y);
    alert(y + "\n" +  ret.join("\n"));
    }
    </script>
    <button onclick="hello();">hello</button>
    </body></html>
      

  5.   

    谢谢猛男Free_Wind22,好简洁啊