博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
递归,排序等算法编程题
阅读量:6328 次
发布时间:2019-06-22

本文共 4259 字,大约阅读时间需要 14 分钟。

7、递归算法题1

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

例:n=1237
则输出为:
1237,
2474,
4948,
9896,
9896,
4948,
2474,
1237,

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

   public static void doubleNum(int n)

   {

      System.out.println(n);

      if(n<=5000)

        doubleNum(n*2);

      System.out.println(n);  

   }

                       

  
  

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

   
  

  

 

 

7、递归算法题2

 

 

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

[java]
  1. package cn.itcast;  
  2.   
  3.    
  4.   
  5. importjava.util.Date;  
  6.   
  7.    
  8.   
  9. public class A1 {  
  10.   
  11.    
  12.   
  13.    public static void main(String [] args)  
  14.   
  15.    {  
  16.   
  17.       System.out.println(computeAge(8));  
  18.   
  19.    }  
  20.   
  21.      
  22.   
  23.    public static int computeAge(int n)  
  24.   
  25.    {  
  26.   
  27.       if(n==1return 10;  
  28.   
  29.       return computeAge(n-1)+ 2;  
  30.   
  31.    }  
  32.   
  33. }  
  34.   
  35.    
  36.   
  37.    public static void toBinary(int n,StringBuffer result)  
  38.   
  39.    {  
  40.   
  41.    
  42.   
  43.       if(n/2 != 0)  
  44.   
  45.         toBinary(n/2,result);  
  46.   
  47.       result.append(n%2);     
  48.   
  49.    }  
package cn.itcast; importjava.util.Date; public class A1 {    public static void main(String [] args)   {      System.out.println(computeAge(8));   }      public static int computeAge(int n)   {      if(n==1) return 10;      return computeAge(n-1)+ 2;   }}    public static void toBinary(int n,StringBuffer result)   {       if(n/2 != 0)        toBinary(n/2,result);      result.append(n%2);      }

 

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

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

[java]
  1. public class QuickSort {  
  2. /** 
  3. * 快速排序 
  4. * @param strDate 
  5. * @param left 
  6. * @param right 
  7. */  
  8. public void quickSort(String[] strDate,int left,int right){  
  9. String middle,tempDate;  
  10. int i,j;  
  11. i=left;  
  12. j=right;  
  13. middle=strDate[(i+j)/2];  
  14. do{  
  15. while(strDate[i].compareTo(middle)<0&& i<right)  
  16. i++; //找出左边比中间值大的数   
  17. while(strDate[j].compareTo(middle)>0&& j>left)  
  18. j--; //找出右边比中间值小的数   
  19. if(i<=j){ //将左边大的数和右边小的数进行替换    
  20. tempDate=strDate[i];  
  21. strDate[i]=strDate[j];  
  22. strDate[j]=tempDate;  
  23. i++;  
  24. j--;  
  25. }  
  26. }while(i<=j); //当两者交错时停止   
  27.   
  28. if(i<right){  
  29. quickSort(strDate,i,right);//从   
  30. }  
  31. if(j>left){  
  32. quickSort(strDate,left,j);  
  33. }  
  34. }  
  35. /** 
  36.   * @param args 
  37.   */  
  38. public static void main(String[] args){  
  39. String[] strVoid=newString[]{
    "11","66","22","0","55","22","0","32"};  
  40. QuickSort sort=new QuickSort();  
  41. sort.quickSort(strVoid,0,strVoid.length-1);  
  42. for(int i=0;i<strVoid.length;i++){  
  43. System.out.println(strVoid[i]+" ");  
  44. }  
  45. }  
  46.   
  47.   
  48. }  
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
0&& j>left)j--; //找出右边比中间值小的数if(i<=j){ //将左边大的数和右边小的数进行替换 tempDate=strDate[i];strDate[i]=strDate[j];strDate[j]=tempDate;i++;j--;}}while(i<=j); //当两者交错时停止if(i
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

 

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

[html]
  1. //用下面的也可以  
  2.   
  3. //for(int i=0,int j=a.length-1;i<j;i++,j--) 是否等效于 for(int i=0;i<a.length/2;i++)呢?  
  4.   
  5.    
  6.   
  7. importjava.util.Arrays;  
  8.   
  9.    
  10.   
  11. public classSwapDemo{  
  12.   
  13.    
  14.   
  15.    public static void main(String[] args){  
  16.   
  17.       int [] a = new int[]{  
  18.   
  19.                  (int)(Math.random() * 1000),  
  20.   
  21.                  (int)(Math.random()* 1000),  
  22.   
  23.                  (int)(Math.random() * 1000),  
  24.   
  25.                  (int)(Math.random() * 1000),                   
  26.   
  27.                  (int)(Math.random() * 1000)                                                  
  28.   
  29.       };   
  30.   
  31.         
  32.   
  33.       System.out.println(a);  
  34.   
  35.       System.out.println(Arrays.toString(a));  
  36.   
  37.       swap(a);  
  38.   
  39.       System.out.println(Arrays.toString(a));     
  40.   
  41.    }  
  42.   
  43.      
  44.   
  45.    public static void swap(int a[]){  
  46.   
  47.       int len = a.length;  
  48.   
  49.       for(int i=0;i<len/2;i++){  
  50.   
  51.         int tmp = a[i];  
  52.   
  53.         a[i] = a[len-1-i];  
  54.   
  55.         a[len-1-i] = tmp;  
  56.   
  57.       }  
  58.   
  59.    }  
  60.   
  61. }  
//用下面的也可以//for(int i=0,int j=a.length-1;i

 

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

[java]
  1. 去零的代码:  
  2.   
  3.     returnsb.reverse().toString().replaceAll("零[拾佰仟]","零").replaceAll("零+万","万").replaceAll("零+元","元").replaceAll("零+","零");  
  4.   
  5.    
  6.   
  7. public class RenMingBi {  
  8.   
  9.    
  10.   
  11.        /** 
  12.  
  13.         * @param args add by zxx ,Nov 29, 2008 
  14.  
  15.         */  
  16.   
  17.        private static final char[]data = new char[]{  
  18.   
  19.                      '零','壹','贰','叁','肆','伍','陆','柒','捌','玖'  
  20.   
  21.               };   
  22.   
  23.        private static final char[]units = new char[]{  
  24.   
  25.               '元','拾','佰','仟','万','拾','佰','仟','亿'  
  26.   
  27.        };  
  28.   
  29.        public static voidmain(String[] args) {  
  30.   
  31.               // TODOAuto-generated method stub   
  32.   
  33.               System.out.println(  
  34.   
  35.                             convert(135689123));  
  36.   
  37.        }  
  38.   
  39.    
  40.   
  41.        public static Stringconvert(int money)  
  42.   
  43.        {  
  44.   
  45.               StringBuffer sbf =new StringBuffer();  
  46.   
  47.               int unit = 0;  
  48.   
  49.               while(money!=0)  
  50.   
  51.               {  
  52.   
  53.                      sbf.insert(0,units[unit++]);  
  54.   
  55.                      int number =money%10;  
  56.   
  57.                      sbf.insert(0,data[number]);  
  58.   
  59.                      money /= 10;  
  60.   
  61.               }  
  62.   
  63.    
  64.   
  65.               return sbf.toString();  
  66.   
  67.        }  
  68.   
  69. }  

转载于:https://www.cnblogs.com/gxpblogs/archive/2013/05/09/3068819.html

你可能感兴趣的文章
关于Input内容改变的触发事件
查看>>
【干货】.NET WebApi HttpMessageHandler管道
查看>>
python 函数的嵌套 和 作用域链
查看>>
在ASP中运行SQL SERVER 存储过程
查看>>
lottie
查看>>
Orace内置函数大全[转:http://www.cnblogs.com/lfx0692/articles/2395950.html]
查看>>
[学习笔记]Segment Tree Beats!九老师线段树
查看>>
[WC2013]平面图——平面图点定位
查看>>
CS1.6 for win7 win10
查看>>
springboot集成freemarker 配置application.properties详解
查看>>
import,reload,__import__在python中的区别
查看>>
在Eclipse中显示行号
查看>>
docker
查看>>
HDU 4292 Food
查看>>
TOJ4537: n阶行列式
查看>>
tp框架之Model类与命名空间
查看>>
冒号课堂 编程范式与OOP思想
查看>>
js获取网页上选中的部分,包含html代码
查看>>
递归求年龄
查看>>
Java 获取Mysql数据库表的列
查看>>