java学习第一天1.3

第三课算法

方法(函数) 
          用来完成特定功能的代码片断
编程

public class helloworld{
void hello(){}   //hello(){} 方法
}
函数

        
方法中的参数
              形式参数:在方法被调用时用于接收外界输入的数据
spa

              实际参数:调用方法时实际传给方法的数据对象

 

 

public class helloworld{
void hello(int a,int b){}   //括号中的a, b 就是形式参数
public static void main(String[] args){
       hello(1,2);}  //括号中的1,2就是实际参数
}
递归

 

方法中的返回值
              返回值类型:方法要返回的结果的数据类型
                   若一个方法没有返回值,必须给出返回值类型void
ip


              返回值:方法在执行完毕后返还给调用者的数据class

              return  --> 语句终止方法的运行并指定要返回的数据变量

public class helloworld{
int hello(int a,int b){  //返回值类型为int
returne a+b;}   //返回值为 a+b 而后就终止方法的运行
public static void main(String[] args){
       hello(1,2);} 
}原理

 


方法的调用
          对象变量名.方法名(实参列表);

               实参的数目、数据类型和次序必须和所调用的方法声明的形参类表匹配


方法的重载
          一个类中能够定义有相同一个相同的名字,但参数列表不一样的多个方法
         条件:
             一、在同一个类中
             二、方法名相同
             三、参数列表不一样(类型,大小,数量)

class hello{
void name(int a){}
void name(int a,int b){}          //hello类里面的方法都是重载
void name(int a,double b){}
void name(){}


}

 

递归算法
          递归算法-3的阶乘

 

原理图:

public class Test {
  
 public static int multiply(int n){
  
     if( n == 1|| n == 0) {
     
      return 1;
        }
else {
          
 return n * multiply(n-1);
        }
 
  }
   
public static void main(String[] args){

        System.out.println(multiply(3));
 
  }

}

 


做业

一、从键盘输入两个数a、b求出其最大公约数和最小公倍数

  //最小公约数[最容易理解的]
  int a = 4453;
  int b = 5767;
  int max = a > b? a : b;
  int min = a < b? a : b;
  if (max % min == 0) {
   System.out.println(min);
  }else{
   for(int i = min; i > 1; i--){
    if(a % i == 0 && b % i == 0){
     System.out.println(i);
    }
   }
  }

  
  5767÷4453=1余1314
  4453÷1314=3余511
  1314÷511=2余292
  511÷292=1余219
  292÷219=1余73
  219÷73=3
  
  【展转相除法】
  if (a < b) {// a中放大数
   int temp = a;
   a = b;
   b = temp;
  }
  while (b != 0) {
   int r = a % b;
   a = b;
   b = r;
  }
  System.out.println("这俩个数的最大公约数是:" + a);

 

 


先求最大公约数,最小公倍数就是他们的积除以最大公约


二、输入1个年份,判断该年是不是闰年
//1.普通年能被4整除且不能被100整除的为闰年。(如2004年就是闰年,1901年不是闰年)
//2.世纪年能被400整除的是闰年。(如2000年是闰年,1900年不是闰年)
//3.对于数值很大的年份,这年若是能整除3200,而且能整除172800则是闰年。如172800年是闰年,86400年不是闰年(由于虽然能整除3200,但不能整除172800)(此按一回归年365天5h48'45.5''计算)。
 

//彻底数(Perfect number),又称完美数或完备数,是一些特殊的天然数。
它全部的真因子(即除了自身之外的约数)的和(即因子函数),
//刚好等于它自己。若是一个数刚好等于它的因子之和,则称该数为“彻底数”。
三、一个数若是刚好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.
 编程找出1000之内的全部完数。
 public static void main(String[] args) {
  int sum = 0, i, j;
  for (i = 1; i <= 1000; i++) {
   for (j = 1, sum = 0; j <= i / 2; j++) {
    if (i % j == 0)
     sum += j;
   }

   if (sum == i)
    System.out.println("完数:" + i);
  }
 }
 
 
 
四、查找100以内的全部质数
 public static void main(String[] args) {
  for (int i = 2; i <= 100; i++) {
   int temp = (int) Math.sqrt(i);
   if (i <= 3) {
    System.out.println(i + " is a prime");
   } else {
    for (int j = 2; j <= i; j++) {
     if (i % j == 0) {
      break;
     }
     if (j >= i) {
      System.out.println(i + " is a prime");
     }
    }

   }
  }
 }

五、写程序,分解质因数  eg: 输入 60, 输出 60 = 2 * 2 * 3 * 5 
 public static void main(String[] args) {
  int n = 60;
  System.out.print(n + "=");
  for (int i = 2; i < n + 1; i++) {
   while (n % i == 0 && n != i) {
    n /= i;
    System.out.print(i + "*");
   }
   if (n == i) {
    System.out.println(i);
    break;
   }
  }
 }
 
6:打印等腰
         *
        ***
       *****
      *******
     *********
    ***********
   *************
  ***************
 *****************
----*
---***
--*****
-*******


public static void main(String[] args) {
  Scanner scanner = new Scanner(System.in);
  while(true){
   System.out.println("请输入三角形的层数输入0退出:");
   int n = scanner.nextInt();
   if(n == 0){
    break;
   }
   
   for(int i = 1; i <= n; i++){

    //打印空格的循环, j < n -i, 由于个数须要动态变化    //而n是固定的,而i是递增的,n - i 递减的    for(int j = 0; j < n-i; j++){     System.out.print("-");    }        for(int j = 0; j < 2*i - 1; j++){     System.out.print("*");    }        System.out.println();   }      //下面一部分   for(int i = n -1; i > 0; i--){        for(int j = 0; j <n - i; j++){     System.out.print("-");    }        for(int k = 0; k < 2*i-1; k++){     System.out.print("*");    }    System.out.println();   }  }  }

 
相关文章
相关标签/搜索