JAVA 16反復関数と再帰関数
再帰関数を使用したファクトリ関数
import java.util.Scanner;
public class Main {
public static int factorial(int number) {
if (number == 1)
{
return 1;
}
else
{
return number * factorial(number - 1); // 5! = 5 * 4! 이용 **
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("수를 입력하세요.");
int N = input.nextInt();
System.out.println("위 수의 팩토리얼의 값 : " + factorial(N));
input.close();
}
}
フィボナッチ数列
くりかえしかんすう
import java.util.Scanner;
public class Main {
// 반복함수를 사용한 피보나치 수열
public static int fibo(int k) {
int a1 = 1;
int a2 = 1;
int result = -1; // 아예 첨부터 -1로 잡으면 좋다.
if (k == 1 || k == 2)
{
return 1;
}
else
{
for(int i = 2; i < k; i++) // 자리가 한칸씩 이동**
{
result = a1 + a2;
a1 = a2;
a2 = result;
}
}
return result;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("몇 번째 피보나치 수열?");
int N = input.nextInt();
if (N == -1)
{
System.out.println("값이 존재하지 않는다.");
}
else
{
System.out.println("다음과 같다 : " + fibo(N));
}
input.close();
}
}
さいきかんすう
import java.util.Scanner;
public class Main {
public static int fibo(int k) {
if (k == 1 || k == 2)
{
return 1;
}
else
{
return fibo(k - 1) + fibo(k - 2);
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("몇 번째 피보나치 수열?");
int N = input.nextInt();
if (N == -1)
{
System.out.println("값이 존재하지 않는다.");
}
else
{
System.out.println("다음과 같다 : " + fibo(N));
}
input.close();
}
}
👀👀 複雑すぎる欠点!!効率が低すぎて、時間が長すぎます.
->この問題を解決するためにダイナミックプログラムが必要です
Ref
Reference
この問題について(JAVA 16反復関数と再帰関数), 我々は、より多くの情報をここで見つけました https://velog.io/@lecharl/JAVA16テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol