Add Tailrecursive Fibonacci
This commit is contained in:
parent
2a7ba7393c
commit
c7aa18990e
3
.idea/misc.xml
generated
3
.idea/misc.xml
generated
@ -1,5 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="21" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_X" default="true" project-jdk-name="openjdk-22" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/out" />
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
@ -21,12 +21,12 @@ public class aufg1 {
|
|||||||
result = 0;
|
result = 0;
|
||||||
} else if (number < 2) {
|
} else if (number < 2) {
|
||||||
result = 1;
|
result = 1;
|
||||||
}else if (number == 10) { // Optimization1
|
// }else if (number == 10) { // Optimization1
|
||||||
result = 89;
|
// result = 89;
|
||||||
}else if (number == 20) { // Optimization2
|
// }else if (number == 20) { // Optimization2
|
||||||
result = 10946;
|
// result = 10946;
|
||||||
}else if (number == 30) { // Optimization3
|
// }else if (number == 30) { // Optimization3
|
||||||
result = 1346269;
|
// result = 1346269;
|
||||||
}else {
|
}else {
|
||||||
result = fibonacciRec(number-1) + fibonacciRec(number-2);
|
result = fibonacciRec(number-1) + fibonacciRec(number-2);
|
||||||
}
|
}
|
||||||
@ -34,11 +34,30 @@ public class aufg1 {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int fiboTailRec(int number){
|
||||||
|
return helper(++number, new int[] {0,1});
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int helper(int number, int[] result){
|
||||||
|
if (number < 0){
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (number < 2){
|
||||||
|
return result[number];
|
||||||
|
}
|
||||||
|
|
||||||
|
int temp = result[0] + result[1];
|
||||||
|
result = new int[] {result[1], temp};
|
||||||
|
|
||||||
|
return helper(number-1, result);
|
||||||
|
}
|
||||||
|
|
||||||
public static void main(String[] agrs){
|
public static void main(String[] agrs){
|
||||||
// Fib(47) causes an Integer Overflow
|
// Fib(47) causes an Integer Overflow
|
||||||
for (int i=0; i<46; i++) {
|
for (int i=0; i<46; i++) {
|
||||||
System.out.println("i " + i + ": " + fibonacciIter(i));
|
System.out.println("i " + i + ": " + fibonacciIter(i));
|
||||||
System.out.println("i " + i + ": " + fibonacciRec(i));
|
System.out.println("i " + i + ": " + fibonacciRec(i));
|
||||||
|
System.out.println("i " + i + ": " + fiboTailRec(i));
|
||||||
System.out.println("==========");
|
System.out.println("==========");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,9 +4,9 @@ public class Demo {
|
|||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
Queenproblem Q = new Queenproblem();
|
Queenproblem Q = new Queenproblem();
|
||||||
Q.solve();
|
Q.solve();
|
||||||
// System.out.println("========\n");
|
System.out.println("====================================\n");
|
||||||
// Q.setField(new int[]{0,0,0,0,0,0,0,0});
|
Q.setField(new int[]{0,0,0,0,0,0,0,0});
|
||||||
// Q.solve();
|
Q.solve();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user