再帰101
2125 ワード
再帰は、プログラマの間では常に悪名高い、また、新しいプログラマや初心者のための混乱.再帰は単にそれ自体を呼び出すプログラムまたは関数を参照します.
今日、私はいくつかの再発の問題と概念を簡略化されます継承.
指定された条件が満たされるまで、関数が自分自身を呼び出すとき.
それを避けるために、ベース条件を必ず確認してください.
問題1 : Javaで再帰を使用してn回印刷する
逆ファッション
追記: F ( i + 1 , n )を使用することはできません.
このようにして、基本的な場合は、関数が最初に実行された後に関数が呼び出された後に関数が呼び出されます
今日、私はいくつかの再発の問題と概念を簡略化されます継承.
What is Recursion?
when to use Recursion?
Recursion problems and key takeaways
指定された条件が満たされるまで、関数が自分自身を呼び出すとき.
void foo(int i){
print(1);
foo();
}
main(){
foo(i);
}
上記の関数は、自分自身を呼び出し続け、停止して1を印刷することはありません.これはスタックオーバーフローにつながります.そして、すべてのメモリスペースまでスタックを満たします.それを避けるために、ベース条件を必ず確認してください.
cnt=0
foo(){
if(cnt==4)
return;
print(cnt)
cnt++
f()
}
main(){
f();
}
セクション1 :簡単な問題問題1 : Javaで再帰を使用してn回印刷する
public class Main
{
static void printName(int n){
while(n<1) {
return;
}
n--;
System.out.println("swapnil");
printName(n);
}
public static void main(String[] args) {
java.util.Scanner sc= new java.util.Scanner(System.in);
int n= sc.nextInt();
int i=1;
printName(n);
}
}
問題2 : Nから1に直線的に印刷する逆ファッション
public class Main
{
static void printNum(int i,int n){
if(i<1){
return;
}
else{
System.out.println(i);
printNum(i-1,n);
}
}
public static void main(String[] args) {
java.util.Scanner sc= new java.util.Scanner(System.in);
int n= sc.nextInt();
int i=n;
printNum(i,n);
}
}
問題3 :バックトラッキングを使用して1からnまでの印刷追記: F ( i + 1 , n )を使用することはできません.
このようにして、基本的な場合は、関数が最初に実行された後に関数が呼び出された後に関数が呼び出されます
public class Main
{
static void printNum(int i,int n){
if(i<1){
return;
}
else{
printNum(i-1,n);
System.out.println(i);
}
}
public static void main(String[] args) {
java.util.Scanner sc= new java.util.Scanner(System.in);
int n= sc.nextInt();
int i=n;
printNum(i,n);
}
}
Reference
この問題について(再帰101), 我々は、より多くの情報をここで見つけました https://dev.to/insanity_xi/recursion-101-2gcdテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol