顯示具有 TQC plus JAVA 6 第四類 標籤的文章。 顯示所有文章
顯示具有 TQC plus JAVA 6 第四類 標籤的文章。 顯示所有文章

403 尾端遞迴次方計算

import java.util.Scanner;
public class JPA403 {
    static Scanner keyboard = new Scanner(System.in);
    public static void main(String args[]) {
int m;
int n;

System.out.print("Input m : ");
m=keyboard.nextInt();

    while(m!=999){
    System.out.print("Input n : ");
    n=keyboard.nextInt();
    System.out.println("Ans ( 尾端遞迴 ) : "+fact(m,n,1));
    System.out.println("Ans ( 迴圈 ) : "+loop(m,n,1));
    System.out.print("Input m : ");
m=keyboard.nextInt();
    }
    }

static int fact(int x,int y,int z){
if(y>0){
return fact(x,y-1,x*z);
}
else{
return z;
}
}

    static int loop(int x,int y,int z){
    while (y>0){
    z=z*x;
    y--;
    }
    return z;
    }
}

408 遞迴字串反向

import java.util.Scanner;
public class JPA408 {
    static Scanner keyboard = new Scanner(System.in);
    public static void main(String args[]) {
        String s, c;
        System.out.print("Input a string: ");
        s = keyboard.nextLine();
        System.out.printf("%s\n", reverse(s));
        System.out.print("Input a string: ");
        s = keyboard.nextLine();
        System.out.printf("%s\n", reverse(s));
    }

    static String reverse(String str){
    if(str.equals("")){
    return "";
    }
    else{
    return reverse(str.substring(1))+str.substring(0,1);
    }
    }
}

405 遞迴函數

import java.util.Scanner;
public class JPA405 {
    static Scanner keyboard = new Scanner(System.in);
    public static void main(String args[]) {

int n;
System.out.print("Input the number n :");
n= keyboard.nextInt();
System.out.println("Ans : "+sum2(n));
   }

    static int sum2(int n) {
if(n>1){
return sum2(n-1)+2*n;
}
else{
return 2;
}
      }
}

407 尾端遞迴計算總和

import java.util.Scanner;
public class JPA407 {
    static Scanner keyboard = new Scanner(System.in);
    public static void main(String args[]) {
        String s;
        System.out.print("Input a string of numbers: ");
        s = keyboard.nextLine();
        System.out.printf("尾端遞迴:%d\n", sumTail(s, 0));
        System.out.printf("迴圈:%d\n", sumLoop(s, 0));
        System.out.print("Input a string of numbers: ");
        s = keyboard.nextLine();
        System.out.printf("尾端遞迴:%d\n", sumTail(s, 0));
        System.out.printf("迴圈:%d\n", sumLoop(s, 0));
    }


    static int sumTail(String s,int x){

    if(s.equals("")){
    return x;
    }
    else {
    return sumTail(s.substring(1) , x+Integer.parseInt(s.substring(0,1)));
    }
    }
    static int sumLoop(String s,int x){

    while(!s.equals("")){
    x+=Integer.parseInt(s.substring(0,1));
    s=s.substring(1);
    }
    return x;
    }
}

406 遞迴字串計算

import java.util.Scanner;
public class JPA406 {
    static Scanner keyboard = new Scanner(System.in);
    public static void main(String args[]) {
String s;

      System.out.print("Input a string: ");
      s=keyboard.nextLine();
      System.out.println(s+" has "+countA(s)+" As");
      System.out.print("Input a string: ");
      s=keyboard.nextLine();
      System.out.println(s+" has "+countA(s)+" As");

    }

    public static int countA(String str) {
if(str.equals("")){
return 0;
}
else if(str.substring(0,1).equals("A")){
return 1+countA(str.substring(1));
}
else{
return countA(str.substring(1));
}
      }
}

410 遞迴字串替換

import java.util.Scanner;
public class JPA410 {
    static Scanner keyboard = new Scanner(System.in);
    public static void main(String args[]) {
        String s, c1, c2;
        System.out.print("Input a string: ");
        s = keyboard.nextLine();
        System.out.print("Input a character: ");
        c1 = keyboard.nextLine();
        System.out.print("Input another character: ");
        c2 = keyboard.nextLine();
        System.out.printf("%s\n", replace(s, c1, c2));
    }

    static String replace(String s,String c1,String c2){
    if(s.equals("")){
    return "";
    }
    else if (s.substring(0,1).equals(c1)){
    return c2+replace(s.substring(1),c1,c2);
    }
    else{
    return s.substring(0,1)+replace(s.substring(1),c1,c2);
    }
    }
}

409 遞迴字串移除

import java.util.Scanner;
public class JPA409 {
    static Scanner keyboard = new Scanner(System.in);
    public static void main(String args[]) {
        String s, c;
        System.out.print("Input a string: ");
        s = keyboard.nextLine();
        System.out.print("Input a character: ");
        c = keyboard.nextLine();
        System.out.printf("%s\n", removeChar(s, c));
        System.out.print("Input a string: ");
        s = keyboard.nextLine();
        System.out.print("Input a character: ");
        c = keyboard.nextLine();
        System.out.printf("%s\n", removeChar(s, c));
    }

    static String removeChar(String s, String c){
    if(s.equals("")){
    return "";
    }
    else if (s.substring(0,1).equals(c)){
    return removeChar(s.substring(1),c);
    }
    else{
    return s.substring(0,1)+removeChar(s.substring(1),c);
    }
    }
}

404 遞迴最大公因數

import java.util.Scanner;
public class JPA404 {
    static Scanner keyboard = new Scanner(System.in);
    public static void main(String args[]) {
int m;
int n;
      System.out.print("Input m : ");
      m=keyboard.nextInt();
     
      while(m!=999){

      System.out.print("Intput n :");
      n=keyboard.nextInt();
      System.out.println("最大公因數 : "+fact(m,n));
System.out.print("Input m : ");
      m=keyboard.nextInt();
      }
    }

    static int fact (int m,int n){
    if(n==0){
    return m;
  }
  else{
  return fact(n,m%n);
  }
    }

}

402 尾端遞迴階乘計算

import java.util.Scanner;
public class JPA402 {
    static Scanner keyboard = new Scanner(System.in);
    public static void main(String args[]) {
        int n;
        System.out.print("Input n (0 <= n <= 16) :");
        n=keyboard.nextInt();
        while(n!=999){
        System.out.println(n+"的階乘(尾端遞迴) = "+forloop(n,1));
        System.out.println(n+"的階乘(迴圈) = "+fun(n,1));
        System.out.print("Input n (0 <= n <= 16) :");
        n=keyboard.nextInt();
        }
    }
static int fun(int x,int y){
if(x>0){
return fun(x-1,x*y);
}
else{
return y;
}
}
static int forloop(int x,int y){

while(x>0){
y=y*x;
x--;
}
return y;
}
}

401 遞迴階乘計算

import java.util.Scanner;
public class JPA401 {

    static Scanner keyboard = new Scanner(System.in);
    public static void main(String args[]) {

        int input=0;
        System.out.println("Input n(0<=n<=16)");
        input=keyboard.nextInt();
        while(input!=999){
        System.out.println(input+"的階層 = "+k(input));
        System.out.println("Input n(0<=n<=16)");
        input=keyboard.nextInt();
        }
    }
static int k(int x){

if(x>1){
return x*k(x-1);
}
else{
return 1;
}

}
}