Skip to content

Instantly share code, notes, and snippets.

@kgashok
Last active December 5, 2016 21:54
Show Gist options
  • Select an option

  • Save kgashok/7be16089d877bc1017e5cba56bb76fe2 to your computer and use it in GitHub Desktop.

Select an option

Save kgashok/7be16089d877bc1017e5cba56bb76fe2 to your computer and use it in GitHub Desktop.
palindromesKeys.md
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>palindromesKeys.md</title>
<link rel="stylesheet" href="https://stackedit.io/res-min/themes/base.css" />
<script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML"></script>
</head>
<body><div class="container"><h2 id="table-of-contents">Table of Contents</h2>
<p>Take a look at the <a href="https://rawgit.com/kgashok/ddfaf6065dbb5e51bd18348e1a3a227c/raw/877998027755a4e138fbc0fb7eb8b0a0ccb9872e/recursiveFunc.md">HTML</a> version for TOC.</p>
<p><div class="toc">
<ul>
<li><ul>
<li><a href="#table-of-contents">Table of Contents</a><ul>
<li><a href="#recursive-factorial">Recursive Factorial</a></li>
<li><a href="#recursive-fibonacci-series">Recursive Fibonacci Series</a><ul>
<li><a href="#output">Output</a></li>
</ul>
</li>
<li><a href="#recursive-sum">Recursive Sum</a></li>
<li><a href="#recursive-palindrome">Recursive Palindrome</a><ul>
<li><a href="#output-1">Output</a></li>
</ul>
</li>
<li><a href="#recursive-linked-list">Recursive Linked List</a><ul>
<li><a href="#output-2">Output</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</p>
<h3 id="recursive-factorial">Recursive Factorial</h3>
<pre class="prettyprint"><code class="language-c hljs "><span class="hljs-preprocessor">#include &lt;stdio.h&gt; </span>
<span class="hljs-keyword">int</span> factorial (<span class="hljs-keyword">int</span> n) {
<span class="hljs-keyword">if</span> ( n == <span class="hljs-number">0</span> || n == <span class="hljs-number">1</span>) <span class="hljs-comment">// TERMINAL CONDITION</span>
<span class="hljs-keyword">return</span> <span class="hljs-number">1</span>;
<span class="hljs-keyword">return</span> n * factorial (n-<span class="hljs-number">1</span>);
}
<span class="hljs-keyword">int</span> main (<span class="hljs-keyword">int</span> argc, <span class="hljs-keyword">char</span>** argv) {
<span class="hljs-keyword">int</span> number = atoi (argv[<span class="hljs-number">1</span>]); <span class="hljs-comment">// or do scanf()</span>
<span class="hljs-keyword">int</span> fval = factorial(number);
<span class="hljs-built_in">printf</span> (<span class="hljs-string">"The factorial of %d is %d\n"</span>, number, fval);
<span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
}</code></pre>
<h3 id="recursive-fibonacci-series">Recursive Fibonacci Series</h3>
<pre class="prettyprint"><code class="language-c hljs "><span class="hljs-preprocessor">#include &lt;stdio.h&gt; </span>
<span class="hljs-keyword">int</span> generate_fibo (<span class="hljs-keyword">int</span> fibopp, <span class="hljs-keyword">int</span> fibop, <span class="hljs-keyword">int</span> count, <span class="hljs-keyword">int</span> slen) {
<span class="hljs-keyword">int</span> fibo = fibopp + fibop;
<span class="hljs-built_in">printf</span> (<span class="hljs-string">"%d "</span>, fibo);
<span class="hljs-keyword">if</span> (count == slen) { <span class="hljs-comment">// TERMINAL CONDITION</span>
<span class="hljs-keyword">return</span> fibo; <span class="hljs-comment">// for the nth Fibonacci number</span>
}
<span class="hljs-comment">// prepare to generate the next in sequence</span>
fibopp = fibop;
fibop = fibo;
<span class="hljs-keyword">return</span> generate_fibo (fibopp, fibop, count+<span class="hljs-number">1</span>, slen);
}
main (<span class="hljs-keyword">int</span> argc, <span class="hljs-keyword">char</span>** argv) {
<span class="hljs-keyword">int</span> seq_length = atoi (argv[<span class="hljs-number">1</span>]);
<span class="hljs-keyword">if</span> (seq_length &lt;= <span class="hljs-number">2</span>) <span class="hljs-keyword">return</span> <span class="hljs-number">1</span>;
<span class="hljs-built_in">printf</span> (<span class="hljs-string">"The fibonacci sequence (%d) is "</span>, seq_length);
<span class="hljs-keyword">int</span> fibo1 = <span class="hljs-number">0</span>, fibo2 = <span class="hljs-number">1</span>;
<span class="hljs-built_in">printf</span> (<span class="hljs-string">"%d %d "</span>, fibo1, fibo2);
<span class="hljs-keyword">int</span> fibFinal = generate_fibo (fibo1, fibo2, <span class="hljs-number">3</span>, seq_length);
<span class="hljs-built_in">printf</span> (<span class="hljs-string">"\nThe %d in fibonacci sequence is %d\n"</span>, seq_length, fibFinal);
<span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
}
</code></pre>
<h4 id="output">Output</h4>
<pre class="prettyprint"><code class=" hljs vhdl">The fibonacci <span class="hljs-keyword">sequence</span> (<span class="hljs-number">13</span>) <span class="hljs-keyword">is</span> <span class="hljs-number">0</span> <span class="hljs-number">1</span> <span class="hljs-number">1</span> <span class="hljs-number">2</span> <span class="hljs-number">3</span> <span class="hljs-number">5</span> <span class="hljs-number">8</span> <span class="hljs-number">13</span> <span class="hljs-number">21</span> <span class="hljs-number">34</span> <span class="hljs-number">55</span> <span class="hljs-number">89</span> <span class="hljs-number">144</span>
The <span class="hljs-number">13</span> <span class="hljs-keyword">in</span> fibonacci <span class="hljs-keyword">sequence</span> <span class="hljs-keyword">is</span> <span class="hljs-number">144</span>
</code></pre>
<h3 id="recursive-sum">Recursive Sum</h3>
<pre class="prettyprint"><code class=" hljs axapta"><span class="hljs-preprocessor">#include &lt;stdio.h&gt; </span>
<span class="hljs-keyword">int</span> rec_sum (<span class="hljs-keyword">int</span>* s, <span class="hljs-keyword">int</span> size) {
<span class="hljs-keyword">if</span> (size == <span class="hljs-number">0</span>) <span class="hljs-comment">// TERMINAL CONDITION</span>
<span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
<span class="hljs-keyword">int</span> sumval = *s; <span class="hljs-comment">// get element</span>
<span class="hljs-keyword">return</span> sumval + rec_sum(++s, --size);
}
<span class="hljs-keyword">int</span> main () {
<span class="hljs-keyword">int</span> s[<span class="hljs-number">7</span>] = {<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>, <span class="hljs-number">6</span>, <span class="hljs-number">7</span>};
<span class="hljs-keyword">int</span> <span class="hljs-keyword">sum</span> = rec_sum (s, <span class="hljs-number">7</span>);
printf (<span class="hljs-string">"The sum is %d\n"</span>, <span class="hljs-keyword">sum</span>);
<span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
}</code></pre>
<h3 id="recursive-palindrome">Recursive Palindrome</h3>
<pre class="prettyprint"><code class="language-c hljs "><span class="hljs-preprocessor">#include &lt;stdio.h&gt; </span>
<span class="hljs-preprocessor">#include &lt;string.h&gt; </span>
<span class="hljs-keyword">int</span> is_palindrome (<span class="hljs-keyword">char</span>* front, <span class="hljs-keyword">char</span>* back) {
<span class="hljs-keyword">if</span> (*front != *back) { <span class="hljs-comment">// TERMINAL CONDITION_1 - there is no match</span>
<span class="hljs-comment">// printf ("front: %c != back: %c\n", *front, *back); </span>
<span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
}
<span class="hljs-keyword">if</span> (front &gt;= back) <span class="hljs-comment">// TERMINAL CONDITION_2 - there is nothing more</span>
<span class="hljs-keyword">return</span> <span class="hljs-number">1</span>;
<span class="hljs-comment">// printf ("front: %c == back: %c\n", *front, *back); </span>
<span class="hljs-keyword">return</span> is_palindrome (++front, --back);
}
<span class="hljs-keyword">int</span> main () {
<span class="hljs-keyword">char</span> input[<span class="hljs-number">30</span>];
<span class="hljs-built_in">scanf</span> (<span class="hljs-string">"%s"</span>, input);
<span class="hljs-keyword">char</span>* front = input;
<span class="hljs-keyword">char</span>* back = input + <span class="hljs-built_in">strlen</span>(input)-<span class="hljs-number">1</span>;
<span class="hljs-keyword">int</span> res = is_palindrome(front, back);
<span class="hljs-built_in">printf</span> (<span class="hljs-string">"%s is a palindrome: %s\n "</span>, input,
(res==<span class="hljs-number">1</span>? <span class="hljs-string">"True"</span> : <span class="hljs-string">"False"</span>));
<span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
}</code></pre>
<h4 id="output-1">Output</h4>
<pre class="prettyprint"><code class=" hljs applescript">malayalam
<span class="hljs-keyword">front</span>: m == <span class="hljs-keyword">back</span>: m
<span class="hljs-keyword">front</span>: a == <span class="hljs-keyword">back</span>: a
<span class="hljs-keyword">front</span>: l == <span class="hljs-keyword">back</span>: l
<span class="hljs-keyword">front</span>: a == <span class="hljs-keyword">back</span>: a
malayalam <span class="hljs-keyword">is</span> a palindrome: True
abcdefcba
<span class="hljs-keyword">front</span>: a == <span class="hljs-keyword">back</span>: a
<span class="hljs-keyword">front</span>: b == <span class="hljs-keyword">back</span>: b
<span class="hljs-keyword">front</span>: c == <span class="hljs-keyword">back</span>: c
<span class="hljs-keyword">front</span>: d != <span class="hljs-keyword">back</span>: f
abcdefcba <span class="hljs-keyword">is</span> a palindrome: False</code></pre>
<h3 id="recursive-linked-list">Recursive Linked List</h3>
<pre class="prettyprint"><code class="language-c hljs "><span class="hljs-preprocessor">#include &lt;stdio.h&gt; </span>
<span class="hljs-preprocessor">#include &lt;stdlib.h&gt; </span>
<span class="hljs-keyword">struct</span> node {
<span class="hljs-keyword">int</span> data;
<span class="hljs-keyword">struct</span> node* next;
};
<span class="hljs-keyword">typedef</span> <span class="hljs-keyword">struct</span> node Node;
Node *head = NULL;
<span class="hljs-keyword">int</span> traverseSum (Node* np, <span class="hljs-keyword">int</span> i) {
<span class="hljs-keyword">if</span> (np == NULL) <span class="hljs-comment">// TERMINAL CONDITION</span>
<span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
<span class="hljs-built_in">printf</span> (<span class="hljs-string">"node %d: %d\n"</span>, i++, np-&gt;data);
<span class="hljs-keyword">return</span> np-&gt;data + traverseSum(np-&gt;next, i);
}
Node* createNode (<span class="hljs-keyword">int</span> val) {
Node* n = (Node*) <span class="hljs-built_in">malloc</span> (<span class="hljs-keyword">sizeof</span> (<span class="hljs-keyword">struct</span> node));
n-&gt;data = val;
n-&gt;next = NULL;
<span class="hljs-keyword">return</span> n;
}
<span class="hljs-keyword">int</span> main () {
<span class="hljs-keyword">int</span> numbers[<span class="hljs-number">8</span>] = {<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>, <span class="hljs-number">6</span>, <span class="hljs-number">7</span>, <span class="hljs-number">8</span>};
<span class="hljs-comment">// forming the linked list</span>
Node* head = (Node*)<span class="hljs-built_in">malloc</span> (<span class="hljs-keyword">sizeof</span>(<span class="hljs-keyword">struct</span> node));
Node* np = head;
<span class="hljs-keyword">int</span> i;
<span class="hljs-keyword">for</span> (i = <span class="hljs-number">0</span>; i&lt; <span class="hljs-number">8</span>;i++, np = np-&gt;next) {
np-&gt;next = createNode(numbers[i]);
}
<span class="hljs-keyword">int</span> res = traverseSum (head-&gt;next, <span class="hljs-number">0</span>);
<span class="hljs-built_in">printf</span> (<span class="hljs-string">"Sum of the elements in list %d\n"</span>, res);
<span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
}</code></pre>
<h4 id="output-2">Output</h4>
<pre class="prettyprint"><code class=" hljs applescript">node <span class="hljs-number">0</span>: <span class="hljs-number">1</span>
node <span class="hljs-number">1</span>: <span class="hljs-number">2</span>
node <span class="hljs-number">2</span>: <span class="hljs-number">3</span>
node <span class="hljs-number">3</span>: <span class="hljs-number">4</span>
node <span class="hljs-number">4</span>: <span class="hljs-number">5</span>
node <span class="hljs-number">5</span>: <span class="hljs-number">6</span>
node <span class="hljs-number">6</span>: <span class="hljs-number">7</span>
node <span class="hljs-number">7</span>: <span class="hljs-number">8</span>
Sum <span class="hljs-keyword">of</span> <span class="hljs-keyword">the</span> elements <span class="hljs-keyword">in</span> <span class="hljs-type">list</span> <span class="hljs-number">36</span>
</code></pre></div></body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment