Skip to content

Instantly share code, notes, and snippets.

@CemraJC
Created August 5, 2021 23:50
Show Gist options
  • Save CemraJC/24e0aac1c5df725b30cb02589cc8a5bf to your computer and use it in GitHub Desktop.
Save CemraJC/24e0aac1c5df725b30cb02589cc8a5bf to your computer and use it in GitHub Desktop.
String num(int value) {
// Q1.1 Solution
switch (value) {
case 1:
return "one";
case 2:
return "two";
case 3:
return "three";
case 4:
return "four";
case 5:
return "five";
case 6:
return "six";
case 7:
return "seven";
case 8:
return "eight";
case 9:
return "nine";
default:
return "??";
}
// Q1.2 -- Work until 9:16
String[] names = { "one", "two", /* ... */, "nine"};
// 0 1 8
if (value <= 0 || value >= 10) {
return "??";
} else {
// Known: value is between 1 and 9 (incl.)
// e.g. value == 2 -> names[2 - 1] -> "two"
return names[value - 1]
}
}
// Q2.1
1, 1, 2, 3, 5, 8, 13, 21, 34 ...
// Q2.2 -- Work until 9:25 on recursive method
/**
* Returns the nth element of the fibonacci sequence
*/
int fib(int n) {
// Base case
if (n <= 1) {
return 1;
}
// Recursive case
return fib(n - 1) + fib(n - 2);
}
int fib(int n) {
int prev1_term = 1; // n == 0
int prev2_term = 1; // n == 1
int term = 1;
for (int i = 0; i < n - 1; i++) {
// Calculate next
term = prev1_term + prev2_term;
// Save prior terms
prev2_term = prev1_term;
prev1_term = term;
}
return term;
}
// Q2.3
// Inputs: n == 1, n == 5
// fib(1)
// -> 1
// Result: 1
// fib(5)
// -> [fib(4) -> 5] + [fib(3) -> 3] (8)
// | -> [fib(2) -> 2] + [fib(1) -> 1] (3)
// | -> [fib(1) -> 1] + [fib(0) -> 1] (2)
// +-> [fib(3) -> 3] + [fib(2) -> 2] (5)
// Result: 8
// n = 4
// i | term | prev1_term | prev2_term
// 0 | 2 | 2 | 1
// 1 | 3 | 3 | 2
// 2 | [5] | 5 | 3
// Result: 5
// Q3
long ackermann(short m, short n) {
if (m == 0) {
return n + 1;
}
if (m > 0 && n == 0) {
return ackermann(m - 1, 1);
}
if (m > 0 && n > 0) {
return ackermann(m - 1, ackermann(m, n - 1));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment