アルゴリズムはとても美しい再帰の基礎です
14517 ワード
みんなは微信の公衆番号の罡罡の学友が青い橋の杯に返事することに注目します
過去の本題とC言語版の本題ソースコードを無料で入手できます
さいきそ
1.再帰的に階乗を求める.連続数字3を再帰的に印刷する.配列要素の和4を再帰的に求める.文字列反転5.フィボナッチ数列6.最大公約数7.挿入順序の再帰
再帰の基礎の小結:(循環は必ず再帰に変えることができて、ただあるのは簡単で、あるのは複雑です)
繰り返しを探す1.区分方法2を見つける.繰返し式または等価変換を見つけるのは、親問題から子問題への変換です.
変化の量の変化の量を探して通常定数とします
出口を見つけ出す
みんなの支持に感謝して、あなたの1ボタンの3連は罡罡の学友の前進の最大の動力です!
一键三连一键三连一键三连一键三连一键三连一键三连一键三连
過去の本題とC言語版の本題ソースコードを無料で入手できます
さいきそ
1.再帰的に階乗を求める.連続数字3を再帰的に印刷する.配列要素の和4を再帰的に求める.文字列反転5.フィボナッチ数列6.最大公約数7.挿入順序の再帰
public class Main {
public static void main(String[] args) {
//int res=f3(new int[]{1,2,3,4,5},0);
//System.out.println(res);
//System.out.println(reverse("abcd", 3));
//System.out.println(fib(5));
int[] arr={
4,3,2,5,0};
insertSort(arr,4);
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}
/*
* f1(n): n -->f1(n-1) n-1
* :n*(n-1) , n-1 ( )——
* :
* :
* */
static int f1(int n){
// f(n)=n*f(n-1)
if(n==1)
return 1;
return n*f1(n-1);
}
/*
* :
* :
* :
* */
static void f2(int i,int j){
// p(i,j)=p(i)->p(i+1,j)
if (i>j) {
return;
}
System.out.println(i);
f2(i+1, j);
}
/*
* arr
* :
* :
* :
* */
static int f3(int[] arr,int begin){
//
if(begin==arr.length-1){
return arr[begin];
}
return arr[begin]+f3(arr, begin+1);
}
/*
*
* */
static String reverse(String src,int end){
if(end==0){
return ""+src.charAt(0);
}
return src.charAt(end)+reverse(src, end-1);
}
// 1.
/* , :
* : +
* :
* */
static int fib(int n){
// f(n)=f(n-1)+f(n-2)
if(n==1||n==2)
return 1;
return fib(n-1)+fib(n-2);
}
/*
* f(m,n)=f(n,m%n)
* m%n=0 n
*
* */
static int gcd(int m,int n){
if(n==0) return m;
return gcd(n, m%n);
}
/* 0—
* : 0~ ,
*
* */
static void insertSort(int[] arr,int k){
if(k==0){
return;
}
// k-1
insertSort(arr, k-1);
// k
int x=arr[k];
int index=k-1;
while(index>-1&&x<arr[index]){
arr[index+1]=arr[index];
index--;
}
arr[index+1]=x;
}
}
再帰の基礎の小結:(循環は必ず再帰に変えることができて、ただあるのは簡単で、あるのは複雑です)
繰り返しを探す1.区分方法2を見つける.繰返し式または等価変換を見つけるのは、親問題から子問題への変換です.
変化の量の変化の量を探して通常定数とします
出口を見つけ出す
みんなの支持に感謝して、あなたの1ボタンの3連は罡罡の学友の前進の最大の動力です!
一键三连一键三连一键三连一键三连一键三连一键三连一键三连