ASDV-Java/Semester 3/Assignments/RecursionDemo/lab4_Recursion1_CalebFonten...

138 lines
10 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>RecursionDemo.java</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<style type="text/css">
<!--
body {color: #a9b7c6; background-color: #2b2b2b; font-family: monospace; font-weight: bold}
pre {color: #a9b7c6; background-color: #2b2b2b; font-family: monospace; font-weight: bold}
table {color: #888888; background-color: #313335; font-family: monospace; font-weight: bold}
.literal {color: #cc7832}
.ST4 {font-family: monospace; font-weight: bold; font-style: italic}
.ST0 {color: #287bde}
.number {color: #6897bb}
.string {color: #6a8759}
.ST1 {color: #808080; font-family: monospace; font-weight: bold; font-style: italic}
.ST5 {color: #9876aa}
.ST6 {color: #8a653b}
.comment {color: #808080}
.whitespace {color: #505050}
.ST2 {color: #9876aa; font-family: monospace; font-weight: bold; font-style: italic}
.ST3 {color: #ffc66d; font-family: monospace; font-weight: bold; font-style: italic}
-->
</style>
</head>
<body>
<table width="100%"><tr><td align="center">/home/caleb/ASDV-Java/Semester 3/Assignments/RecursionDemo/src/main/java/edu/slcc/asdv/caleb/recursiondemo/RecursionDemo.java</td></tr></table>
<pre>
<span class="comment">/*</span>
<span class="comment"> * Click </span><span class="ST0">nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt</span><span class="comment"> to change this license</span>
<span class="comment"> */</span>
<span class="literal">package</span> edu.slcc.asdv.caleb.recursiondemo;
<span class="comment">/**</span>
<span class="comment"> *</span>
<span class="comment"> * </span><span class="comment">@author</span> <span class="comment">caleb</span>
<span class="comment">*/</span>
<span class="literal">public</span> <span class="literal">class</span> RecursionDemo {
<span class="literal">static</span> <span class="literal">void</span> <span class="ST1">printNTimes</span>(<span class="literal">int</span> nTimes, String message) {
<span class="literal">for</span> (<span class="literal">int</span> i = <span class="number">0</span>; i &lt; nTimes; ++i) {
System.<span class="ST2">out</span>.println(message);
}
}
<span class="literal">public</span> <span class="literal">static</span> <span class="literal">boolean</span> <span class="ST3">isPalendrome</span>(String s) {
String backwards = <span class="string">&quot;&quot;</span>;
<span class="literal">for</span> (<span class="literal">int</span> i = s.length() - <span class="number">1</span>; i &gt;= <span class="number">0</span>; i--) {
backwards += s.charAt(i);
}
<span class="literal">return</span> s.equals(backwards);
}
<span class="literal">public</span> <span class="literal">static</span> <span class="literal">long</span> <span class="ST3">fib</span>(<span class="literal">int</span> n) {
<span class="literal">if</span> (n == <span class="number">1</span> || n == <span class="number">2</span>) {
<span class="literal">return</span> <span class="number">1</span>;
}
System.<span class="ST2">out</span>.println(n);
<span class="literal">return</span> <span class="ST4">fib</span>(n - <span class="number">1</span>) + <span class="ST4">fib</span>(n - <span class="number">2</span>);
}
<span class="literal">static</span> <span class="literal">void</span> <span class="ST1">printNTimesRecursion</span>(<span class="literal">int</span> nTimes, String message) {
<span class="literal">if</span> (nTimes == <span class="number">0</span>) {
<span class="literal">return</span>;
}
System.<span class="ST2">out</span>.println(message);
<span class="ST4">printNTimesRecursion</span>(--nTimes, message);
}
<span class="literal">public</span> <span class="literal">static</span> <span class="literal">boolean</span> <span class="ST3">isPalendromeRecursion</span>(String s) {
<span class="literal">if</span> (s.length() == <span class="number">0</span> || s.length() == <span class="number">1</span>) {
<span class="literal">return</span> <span class="literal">true</span>;
} <span class="literal">else</span> <span class="literal">if</span> (s.charAt(<span class="number">0</span>) != s.charAt(s.length() - <span class="number">1</span>)) {
<span class="literal">return</span> <span class="literal">false</span>;
}
<span class="literal">return</span> <span class="ST4">isPalendromeRecursion</span>(s.substring(<span class="number">1</span>, s.length() - <span class="number">1</span>));
}
<span class="literal">public</span> <span class="literal">static</span> <span class="literal">long</span> <span class="ST3">factorial</span>(<span class="literal">int</span> n) {
<span class="literal">long</span> fact;
<span class="literal">if</span> (n == <span class="number">1</span>) {
<span class="literal">return</span> <span class="number">1</span>;
}
fact = n * <span class="ST4">factorial</span>(n - <span class="number">1</span>);
<span class="literal">return</span> fact;
}
<span class="literal">public</span> <span class="literal">static</span> <span class="literal">void</span> <span class="ST3">printArrayRecursively</span>(<span class="literal">int</span>[] arr, <span class="literal">int</span> index) {
<span class="literal">if</span> (index == arr.<span class="ST5">length</span>) {
<span class="literal">return</span>;
} <span class="literal">else</span> {
System.<span class="ST2">out</span>.print(arr[index] + <span class="string">&quot;</span> <span class="string">&quot;</span>);
<span class="ST4">printArrayRecursively</span>(arr, index + <span class="number">1</span>);
}
}
<span class="comment">/**</span>
<span class="comment"> *</span>
<span class="comment"> * </span><span class="comment">@param</span> <span class="ST6">arr</span> <span class="comment">the</span> <span class="comment">array</span> <span class="comment">to</span> <span class="comment">be</span> <span class="comment">searched</span>
<span class="comment"> * </span><span class="comment">@param</span> <span class="ST6">index</span> <span class="comment">the</span> <span class="comment">index</span> <span class="comment">of</span> <span class="comment">the</span> <span class="comment">array</span> <span class="comment">to</span> <span class="comment">manipulate</span>
<span class="comment"> * </span><span class="comment">@param</span> <span class="ST6">currentMax</span> <span class="comment">the</span> <span class="comment">current</span> <span class="comment">maximum</span> <span class="comment">of</span> <span class="comment">the</span> <span class="comment">array</span>
<span class="comment"> * </span><span class="comment">@return</span> <span class="comment">the</span> <span class="comment">maximum</span> <span class="comment">of</span> <span class="comment">the</span> <span class="comment">array</span>
<span class="comment">*/</span>
<span class="literal">public</span> <span class="literal">static</span> <span class="literal">int</span> <span class="ST3">findMaximumRecursive</span>(<span class="literal">int</span> arr[], <span class="literal">int</span> index, <span class="literal">int</span> currentMax) <span class="literal">throws</span> Exception {
<span class="comment">//System.out.println(&quot;at index &quot; + index);</span>
<span class="literal">if</span> (index &gt;= (arr.<span class="ST5">length</span>)) {
<span class="comment">//throw new ArrayIndexOutOfBoundsException();</span>
<span class="literal">return</span> currentMax;
}
<span class="literal">if</span> (arr[index] &gt;= currentMax) {
currentMax = arr[index];
}
currentMax = <span class="ST4">findMaximumRecursive</span>(arr, (index + <span class="number">1</span>), currentMax);
<span class="literal">return</span> currentMax;
}
<span class="literal">public</span> <span class="literal">static</span> <span class="literal">int</span> <span class="ST3">findMaximumRecursive</span>(<span class="literal">int</span> arr[]) <span class="literal">throws</span> Exception {
<span class="comment">// This method simply makes it possible to call findMaximumRecursive() without giving it currentMax or an index</span>
<span class="literal">return</span> <span class="ST4">findMaximumRecursive</span>(arr, <span class="number">0</span>, Integer.<span class="ST2">MIN_VALUE</span>);
}
<span class="literal">public</span> <span class="literal">static</span> <span class="literal">void</span> <span class="ST3">main</span>(String[] args) <span class="literal">throws</span> Exception {
<span class="comment">//System.out.println(factorial(20));</span>
<span class="comment">//printNTimesRecursion(1, &quot;Hello Recursion&quot;);</span>
<span class="comment">//System.out.println(fib(10));</span>
<span class="comment">//System.out.println(isPalendrome(&quot;detartrated&quot;));</span>
<span class="comment">//System.out.println(isPalendromeRecursion(&quot;detartrated&quot;));</span>
<span class="comment">//int[] arr = {2, 3, 5, 6, 7, 8, 10, 32, 64, 128};</span>
<span class="comment">//printArrayRecursively(arr, 0);</span>
System.<span class="ST2">out</span>.println(<span class="ST4">f</span><span class="ST4">indMaximumRecursive</span>(<span class="literal">new</span> <span class="literal">int</span>[]{<span class="number">99</span>, <span class="number">1</span>, <span class="number">44</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">55</span>}));
System.<span class="ST2">out</span>.println(<span class="ST4">f</span><span class="ST4">indMaximumRecursive</span>(<span class="literal">new</span> <span class="literal">int</span>[]{<span class="number">1</span>, <span class="number">44</span>, <span class="number">2</span>, <span class="number">3</span>}));
System.<span class="ST2">out</span>.println(<span class="ST4">f</span><span class="ST4">indMaximumRecursive</span>(<span class="literal">new</span> <span class="literal">int</span>[]{<span class="number">1</span>, <span class="number">44</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">300</span>}));
}
}
</pre></body>
</html>