Java基础部分10

递归算法题1

一个整数,大于0,不用循环和本地变量,按照n,2n,4n,8n的顺序递增,当值大于5000时,把值按照指定顺序输出来。
例:n=1237
则输出为:
1237,
2474,
4948,
9896,
9896,
4948,
2474,
1237,

提示:写程序时,先致谢按递增方式的代码,写好递增的以后,再增加考虑递减部分。

    publicstatic void doubleNum(int n)

    {

       System.out.println(n);

       if(n<=5000)

           doubleNum(n*2);

       System.out.println(n);     

    }






 

Gaibaota(N) = Gaibaota(N-1) + n

 








Java基础部分10


7、递归算法题2

第1个人10,第2个比第1个人大2岁,依次递推,请用递归方式计算出第8个人多大?

package cn.itcast;

 

import java.util.Date;

 

publicclass A1 {

 

    publicstaticvoid main(String [] args)

    {

       System.out.println(computeAge(8));

    }

   

    publicstaticint computeAge(int n)

    {

       if(n==1) return 10;

       return computeAge(n-1) + 2;

    }

}

 

    publicstaticvoid toBinary(int n,StringBuffer result)

    {

 

       if(n/2 != 0)

           toBinary(n/2,result);

       result.append(n%2);     

    }

94、排序都有哪几种方法?请列举。用JAVA实现一个快速排序。

 本人只研究过冒泡排序、选择排序和快速排序,下面是快速排序的代码:

public class QuickSort{
/**
快速排序
* @param strDate
* @param left
* @param right
*/
public void quickSort(String[] strDate,int left,int right){
String middle,tempDate;
int i,j;
i=left;
j=right;
middle=strDate[(i+j)/2];
do{
while(strDate[i].compareTo(middle)<0&& i<right)
i++; //
找出左边比中间值大的数
while(strDate[j].compareTo(middle)>0&& j>left)
j--; //
找出右边比中间值小的数
if(i<=j){ //
将左边大的数和右边小的数进行替换 
tempDate=strDate[i];
strDate[i]=strDate[j];
strDate[j]=tempDate;
i++;
j--;
}
}while(i<=j); //
当两者交错时停止

if(i<right){
quickSort(strDate,i,right);//

}
if(j>left){
quickSort(strDate,left,j);
}
}
/**
  * @param args
  */
public static void main(String[] args){
String[] strVoid=newString[]{"11","66","22","0","55","22","0","32"};
QuickSort sort=new QuickSort();
sort.quickSort(strVoid,0,strVoid.length-1);
for(int i=0;i<strVoid.length;i++){
System.out.println(strVoid[i]+" ");
}
}


}

7、有数组a[n],用java代码将数组元素顺序颠倒

//用下面的也可以

//for(int i=0,intj=a.length-1;i<j;i++,j--) 是否等效于 for(inti=0;i<a.length/2;i++)

 

import java.util.Arrays;

 

public class SwapDemo{

 

    public static void main(String[] args){

       int [] a = new int[]{

                     (int)(Math.random() * 1000),

                     (int)(Math.random() * 1000),

                     (int)(Math.random() * 1000),

                     (int)(Math.random() * 1000),                    

                     (int)(Math.random() * 1000)                                                            

       }; 

      

       System.out.println(a);

       System.out.println(Arrays.toString(a));

       swap(a);

       System.out.println(Arrays.toString(a));      

    }

   

    public static void swap(int a[]){

       int len = a.length;

       for(int i=0;i<len/2;i++){

           int tmp = a[i];

           a[i] = a[len-1-i];

           a[len-1-i] = tmp;

       }

    }

}

2.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。

去零的代码:

     returnsb.reverse().toString().replaceAll("[拾佰仟]","").replaceAll("+","").replaceAll("+","").replaceAll("+","");

 

public class RenMingBi {

 

       /**

        * @param args add by zxx ,Nov 29, 2008

        */

       privatestatic final char[] data = new char[]{

                     '','','','','','','','','',''

              };

       privatestatic final char[] units = new char[]{

              '','','','','','','','','亿'

       };

       publicstatic void main(String[] args) {

              // TODO Auto-generated method stub

              System.out.println(

                            convert(135689123));

       }

 

       publicstatic String convert(int money)

       {

              StringBuffersbf = new StringBuffer();

              intunit = 0;

              while(money!=0)

              {

                     sbf.insert(0,units[unit++]);

                     intnumber = money%10;

                     sbf.insert(0,data[number]);

                     money/= 10;

              }

 

              returnsbf.toString();

       }

}

5. html&JavaScript&ajax部分

1. 判断第二个日期比第一个日期大

       如何用脚本判断用户输入的的字符串是下面的时间格式2004-11-21必须要保证用户的输入是此格式,并且是时间,比如说月份不大于12等等,另外我需要用户输入两个,并且后一个要比前一个晚,只允许用JAVASCRIPT,请详细帮助作答,,

//这里可用正则表达式判断提前判断一下格式,然后按下提取各时间字段内容

<scripttype="text/javascript">

   window. function()

   {

        //这么写是为了实现js代码与html代码的分离,当我修改js时,不能影响html代码。

        document.getElementById("frm1").οnsubmit=

               function(){

                      vard1 = this.d1.value;

                      vard2 = this.d2.value;

                      if(!verifyDate(d1)) {alert("第一个日期格式不对");return false;}

                      if(!verifyDate(d2)) {alert("第二个日期格式不对");return false;}

                      if(!compareDate(d1,d2)){alert("第二个日期比第一日期小");returnfalse;}                 

               };

        }

       

        functioncompareDate(d1,d2)

        {

               vararrayD1 = d1.split("-");

               vardate1 = new Date(arrayD1[0],arrayD1[1],arrayD1[2]);

               vararrayD2 = d2.split("-");

               vardate2 = new Date(arrayD2[0],arrayD2[1],arrayD2[2]);

               if(date1> date2) return false;             

               returntrue;

        }

       

        functionverifyDate(d)

        {

               vardatePattern = /^\d{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2]\d|3[0-1])$/;

               returndatePattern.test(d);

        }

</script>

 

<form id="frm1"action="xxx.html">

<input type="text"name="d1" />

<input type="text"name="d2" />

<input type="submit"/>

</form>

1. table显示n条记录,每3行换一次颜色,即123用红色字体,456用绿色字体,789用红颜色字体。

<body>

<table id="tbl">

   <tr><td>1</td></tr>

   <tr><td>2</td></tr>

   <tr><td>3</td></tr>

   <tr><td>4</td></tr>

   <tr><td>5</td></tr>

   <tr><td>6</td></tr>

   <tr><td>7</td></tr>

   <tr><td>8</td></tr>

   <tr><td>9</td></tr>

   <tr><td>10</td></tr>

</table>

</body>

<scripttype="text/javascript">

   window.οnlοad=function()

        {

               vartbl = document.getElementById("tbl");

               rows= tbl.getElementsByTagName("tr");

               for(i=0;i<rows.length;i++)

               {

                      varj = parseInt(i/3);

                      if(j%2==0)rows[i].style.backgroundColor="#f00";

                      else  rows[i].style.backgroundColor="#0f0";

               }

        }

</script>

本文转自  素颜猪  51CTO博客,原文链接:http://blog.51cto.com/suyanzhu/1561394