基础算法----持续更新
01、斐波那契
package javazoye1;
public class Zee{
public static void main (String[] args){
int f1=1;
int f2=1;
System.out.println("第1月,兔子总对数:1");
System.out.println("第2月,兔子总对数:1");
for(int i=3; i<12;i++) {
int fn = f1+f2;
f1=f2;
f2=fn;
System.out.println("第几月:"+ i +",兔子总对数:"+fn);
//斐波那契数列是典型的递归算法(自己调用自己)
}
}
}
02、泰波那契
泰波那契序列 Tn 定义如下:
T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2
给你整数 n,请返回第 n 个泰波那契数 Tn 的值。
package leedcode;
public class Day1_01 {
public static void main(String[] args) {
}//第 N 个泰波那契数
public int tribonacci(int n) {
int[] sum = new int[38];//数组
sum[0]=0;sum[1]=1;sum[2]=1;
if(n==0)
return sum[n];
if(n==1)
return sum[n];
if(n==2)
return sum[n];
for(int i=3; i<=n; i++){
sum[i] = sum[i-1]+sum[i-2]+sum[i-3];
}
return sum[n];
}
}
03、水仙花数
package javazoye1;
public class ShuiXianhua {
public static void main(String[] args) {
for(int i=100;i<=999;i++) {
int b = i /100;//取百位
int s = i/10%10;//取十位
int g =i % 10;//取个位
if(i==b*b*b+s*s*s+g*g*g) {
System.out.println(i+"是水仙花数。");
}
}
}
}
04、乘法表
package javazoye1;
public class Chengfabiao {
public static void main(String[] args) {
//两个变量运算,用嵌套双循环
for(int n=1;n<=9;n++) {
for(int i=1;i<=n;i++) {//注意i<n
//print 不换行输出
System.out.print(n+"*"+ i+"="+n*i+"\t");
}
//使换行,所以输出一个空的
System.out.println();
}
}
}
05、最大公约数(辗转相除法)
package javazoye1;
import java.util.Scanner;
public class zvdagongyueshu {
public static void main (String[]args) {
Scanner i =new Scanner(System.in);
int a = i.nextInt();
System.out.println("请输入第二个数:");
int b =i.nextInt();
i.close();
int oa=a;
int ob=b;
while(b!=0) { //辗转相除法
int remainder=a%b;
a=b;
b=remainder;
}
System.out.println(oa+"和"+ob+"的最大公约数是"+a);
System.out.println(oa+"和"+ob+"的最小公倍数是"+oa*ob/a);
}
}
package javazoye1;
import java.util.Scanner;
public class ZvDaGongYueShu1 {
public static void main(String[] args) {
//枚举法
Scanner in=new Scanner(System.in);
System.out.println("请输入第一个数:");
int a=in.nextInt();
System.out.println("请输入第二个数:");
int b=in.nextInt();
in.close();
int gcd=1;
for(int i=2;i<=a && i<=b;i++) {
if(a%i==0 && b%i==0) {
gcd=i;
}
}
System.out.println(a+ "和 "+b+ "的最大公约数是"+gcd);
}
}
06、冒泡排序
package javazoye1;
import java.util.Scanner;
//冒泡排序(从大到小)
public class Maopaopaixu1 {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
int n = 5;
int a[]=new int[n];
for(int i=0;i<n;i++) {
a[i]=sc.nextInt();
}
sort(a,n);
for(int i=0;i<n;i++) {
System.out.print(a[i]+" ");
}
}
public static void sort(int a[],int n){
for(int i=1;i<=n-1;i++) {
for(int j=0;j<n-i;j++) {
if(a[j]<a[j+1]) {
int t =a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
}