Skip to main content

Stern's Diatomic Series

Here given code implementation process.

/*
    C program for
    Stern's Diatomic Series
*/
#include <stdio.h>

void printSDS(int n)
{
	if (n <= 0)
	{
		return;
	}
	int dp[n];
	// First element
	dp[0] = 0;
	if (n > 1)
	{
		// Second element
		dp[1] = 1;
	}
	for (int i = 2; i < n; ++i)
	{
		if (i % 2 == 0)
		{
			// Even numbe
			dp[i] = dp[i / 2];
		}
		else
		{
			// Odd Number
			dp[i] = dp[(i - 1) / 2] + dp[(i + 1) / 2];
		}
	}
	printf("\n Given N : %d\n", n);
	// Display calculate sequence    
	for (int i = 0; i < n; ++i)
	{
		printf(" %d", dp[i]);
	}
}
int main(int argc, char const *argv[])
{
	int n = 20;
	// n = 20
	/*
	    0 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 1 5 4 7
	    ---------------------------------------
	    Initial 20 Stern's Diatomic Element
	*/
	printSDS(n);
	return 0;
}

Output

 Given N : 20
 0 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 1 5 4 7
// Java program for
// Stern's Diatomic Series
public class SternDiatomicSeries
{
	public void printSDS(int n)
	{
		if (n <= 0)
		{
			return;
		}
		int[] dp = new int[n];
		// First element
		dp[0] = 0;
		if (n > 1)
		{
			// Second element
			dp[1] = 1;
		}
		for (int i = 2; i < n; ++i)
		{
			if (i % 2 == 0)
			{
				// Even numbe
				dp[i] = dp[i / 2];
			}
			else
			{
				// Odd Number
				dp[i] = dp[(i - 1) / 2] + dp[(i + 1) / 2];
			}
		}
		System.out.print("\n Given N : " + n + "\n");
		// Display calculate sequence    
		for (int i = 0; i < n; ++i)
		{
			System.out.print(" " + dp[i]);
		}
	}
	public static void main(String[] args)
	{
		SternDiatomicSeries task = new SternDiatomicSeries();
		int n = 20;
		// n = 20
		/*
		    0 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 1 5 4 7
		    ---------------------------------------
		    Initial 20 Stern's Diatomic Element
		*/
		task.printSDS(n);
	}
}

Output

 Given N : 20
 0 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 1 5 4 7
// Include header file
#include <iostream>

using namespace std;
// C++ program for
// Stern's Diatomic Series
class SternDiatomicSeries
{
	public: void printSDS(int n)
	{
		if (n <= 0)
		{
			return;
		}
		int dp[n];
		// First element
		dp[0] = 0;
		if (n > 1)
		{
			// Second element
			dp[1] = 1;
		}
		for (int i = 2; i < n; ++i)
		{
			if (i % 2 == 0)
			{
				// Even numbe
				dp[i] = dp[i / 2];
			}
			else
			{
				// Odd Number
				dp[i] = dp[(i - 1) / 2] + dp[(i + 1) / 2];
			}
		}
		cout << "\n Given N : " << n << "\n";
		// Display calculate sequence
		for (int i = 0; i < n; ++i)
		{
			cout << " " << dp[i];
		}
	}
};
int main()
{
	SternDiatomicSeries *task = new SternDiatomicSeries();
	int n = 20;
	// n = 20
	/*
	    0 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 1 5 4 7
	    ---------------------------------------
	    Initial 20 Stern's Diatomic Element
	*/
	task->printSDS(n);
	return 0;
}

Output

 Given N : 20
 0 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 1 5 4 7
// Include namespace system
using System;
// Csharp program for
// Stern's Diatomic Series
public class SternDiatomicSeries
{
	public void printSDS(int n)
	{
		if (n <= 0)
		{
			return;
		}
		int[] dp = new int[n];
		// First element
		dp[0] = 0;
		if (n > 1)
		{
			// Second element
			dp[1] = 1;
		}
		for (int i = 2; i < n; ++i)
		{
			if (i % 2 == 0)
			{
				// Even numbe
				dp[i] = dp[i / 2];
			}
			else
			{
				// Odd Number
				dp[i] = dp[(i - 1) / 2] + dp[(i + 1) / 2];
			}
		}
		Console.Write("\n Given N : " + n + "\n");
		// Display calculate sequence
		for (int i = 0; i < n; ++i)
		{
			Console.Write(" " + dp[i]);
		}
	}
	public static void Main(String[] args)
	{
		SternDiatomicSeries task = new SternDiatomicSeries();
		int n = 20;
		// n = 20
		/*
		    0 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 1 5 4 7
		    ---------------------------------------
		    Initial 20 Stern's Diatomic Element
		*/
		task.printSDS(n);
	}
}

Output

 Given N : 20
 0 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 1 5 4 7
package main
import "fmt"
// Go program for
// Stern's Diatomic Series
type SternDiatomicSeries struct {}
func getSternDiatomicSeries() * SternDiatomicSeries {
	var me *SternDiatomicSeries = &SternDiatomicSeries {}
	return me
}
func(this SternDiatomicSeries) printSDS(n int) {
	if n <= 0 {
		return
	}
	var dp = make([] int, n)
	// First element
	dp[0] = 0
	if n > 1 {
		// Second element
		dp[1] = 1
	}
	for i := 2 ; i < n ; i++ {
		if i % 2 == 0 {
			// Even numbe
			dp[i] = dp[i / 2]
		} else {
			// Odd Number
			dp[i] = dp[(i - 1) / 2] + dp[(i + 1) / 2]
		}
	}
	fmt.Print("\n Given N : ", n, "\n")
	// Display calculate sequence
	for i := 0 ; i < n ; i++ {
		fmt.Print(" ", dp[i])
	}
}
func main() {
	var task * SternDiatomicSeries = getSternDiatomicSeries()
	var n int = 20
	// n = 20
	/*
	    0 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 1 5 4 7
	    ---------------------------------------
	    Initial 20 Stern's Diatomic Element
	*/
	task.printSDS(n)
}

Output

 Given N : 20
 0 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 1 5 4 7
<?php
// Php program for
// Stern's Diatomic Series
class SternDiatomicSeries
{
	public	function printSDS($n)
	{
		if ($n <= 0)
		{
			return;
		}
		$dp = array_fill(0, $n, 0);
		// First element
		$dp[0] = 0;
		if ($n > 1)
		{
			// Second element
			$dp[1] = 1;
		}
		for ($i = 2; $i < $n; ++$i)
		{
			if ($i % 2 == 0)
			{
				// Even numbe
				$dp[$i] = $dp[(int)($i / 2)];
			}
			else
			{
				// Odd Number
				$dp[$i] = $dp[(int)(($i - 1) / 2)] + 
                  		  $dp[(int)(($i + 1) / 2)];
			}
		}
		echo("\n Given N : ".$n.
			"\n");
		// Display calculate sequence
		for ($i = 0; $i < $n; ++$i)
		{
			echo(" ".$dp[$i]);
		}
	}
}

function main()
{
	$task = new SternDiatomicSeries();
	$n = 20;
	// n = 20
	/*
	    0 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 1 5 4 7
	    ---------------------------------------
	    Initial 20 Stern's Diatomic Element
	*/
	$task->printSDS($n);
}
main();

Output

 Given N : 20
 0 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 1 5 4 7
// Node JS program for
// Stern's Diatomic Series
class SternDiatomicSeries
{
	printSDS(n)
	{
		if (n <= 0)
		{
			return;
		}
		var dp = Array(n).fill(0);
		// First element
		dp[0] = 0;
		if (n > 1)
		{
			// Second element
			dp[1] = 1;
		}
		for (var i = 2; i < n; ++i)
		{
			if (i % 2 == 0)
			{
				// Even numbe
				dp[i] = dp[parseInt(i / 2)];
			}
			else
			{
				// Odd Number
				dp[i] = dp[parseInt((i - 1) / 2)] + 
                        dp[parseInt((i + 1) / 2)];
			}
		}
		process.stdout.write("\n Given N : " + n + "\n");
		// Display calculate sequence
		for (var i = 0; i < n; ++i)
		{
			process.stdout.write(" " + dp[i]);
		}
	}
}

function main()
{
	var task = new SternDiatomicSeries();
	var n = 20;
	// n = 20
	/*
	    0 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 1 5 4 7
	    ---------------------------------------
	    Initial 20 Stern's Diatomic Element
	*/
	task.printSDS(n);
}
main();

Output

 Given N : 20
 0 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 1 5 4 7
#  Python 3 program for
#  Stern's Diatomic Series
class SternDiatomicSeries :
	def printSDS(self, n) :
		if (n <= 0) :
			return
		
		dp = [0] * (n)
		#  First element
		dp[0] = 0
		if (n > 1) :
			#  Second element
			dp[1] = 1
		
		i = 2
		while (i < n) :
			if (i % 2 == 0) :
				#  Even numbe
				dp[i] = dp[int(i / 2)]
			else :
				#  Odd Number
				dp[i] = dp[int((i - 1) / 2)] + dp[int((i + 1) / 2)]
			
			i += 1
		
		print("\n Given N : ", n )
		i = 0
		#  Display calculate sequence
		while (i < n) :
			print(" ", dp[i], end = "")
			i += 1
		
	

def main() :
	task = SternDiatomicSeries()
	n = 20
	#  n = 20
	#    0 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 1 5 4 7
	#    ---------------------------------------
	#    Initial 20 Stern's Diatomic Element
	task.printSDS(n)

if __name__ == "__main__": main()

Output

 Given N :  20
  0  1  1  2  1  3  2  3  1  4  3  5  2  5  3  4  1  5  4  7
#  Ruby program for
#  Stern's Diatomic Series
class SternDiatomicSeries 
	def printSDS(n) 
		if (n <= 0) 
			return
		end

		dp = Array.new(n) {0}
		#  First element
		dp[0] = 0
		if (n > 1) 
			#  Second element
			dp[1] = 1
		end

		i = 2
		while (i < n) 
			if (i % 2 == 0) 
				#  Even numbe
				dp[i] = dp[i / 2]
			else
 
				#  Odd Number
				dp[i] = dp[(i - 1) / 2] + dp[(i + 1) / 2]
			end

			i += 1
		end

		print("\n Given N : ", n ,"\n")
		i = 0
		#  Display calculate sequence
		while (i < n) 
			print(" ", dp[i])
			i += 1
		end

	end

end

def main() 
	task = SternDiatomicSeries.new()
	n = 20
	#  n = 20
	#    0 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 1 5 4 7
	#    ---------------------------------------
	#    Initial 20 Stern's Diatomic Element
	task.printSDS(n)
end

main()

Output

 Given N : 20
 0 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 1 5 4 7
// Scala program for
// Stern's Diatomic Series
class SternDiatomicSeries()
{
	def printSDS(n: Int): Unit = {
		if (n <= 0)
		{
			return;
		}
		var dp: Array[Int] = Array.fill[Int](n)(0);
		// First element
		dp(0) = 0;
		if (n > 1)
		{
			// Second element
			dp(1) = 1;
		}
		var i: Int = 2;
		while (i < n)
		{
			if (i % 2 == 0)
			{
				// Even numbe
				dp(i) = dp(i / 2);
			}
			else
			{
				// Odd Number
				dp(i) = dp((i - 1) / 2) + dp((i + 1) / 2);
			}
			i += 1;
		}
		print("\n Given N : " + n + "\n");
		i = 0;
		// Display calculate sequence
		while (i < n)
		{
			print(" " + dp(i));
			i += 1;
		}
	}
}
object Main
{
	def main(args: Array[String]): Unit = {
		var task: SternDiatomicSeries = new SternDiatomicSeries();
		var n: Int = 20;
		// n = 20
		/*
		    0 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 1 5 4 7
		    ---------------------------------------
		    Initial 20 Stern's Diatomic Element
		*/
		task.printSDS(n);
	}
}

Output

 Given N : 20
 0 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 1 5 4 7
// Swift 4 program for
// Stern's Diatomic Series
class SternDiatomicSeries
{
	func printSDS(_ n: Int)
	{
		if (n <= 0)
		{
			return;
		}
		var dp: [Int] = Array(repeating: 0, count: n);
		// First element
		dp[0] = 0;
		if (n > 1)
		{
			// Second element
			dp[1] = 1;
		}
		var i: Int = 2;
		while (i < n)
		{
			if (i % 2 == 0)
			{
				// Even numbe
				dp[i] = dp[i / 2];
			}
			else
			{
				// Odd Number
				dp[i] = dp[(i - 1) / 2] + dp[(i + 1) / 2];
			}
			i += 1;
		}
		print("\n Given N : ", n );
		i = 0;
		// Display calculate sequence
		while (i < n)
		{
			print(" ", dp[i], terminator: "");
			i += 1;
		}
	}
}
func main()
{
	let task: SternDiatomicSeries = SternDiatomicSeries();
	let n: Int = 20;
	// n = 20
	/*
	    0 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 1 5 4 7
	    ---------------------------------------
	    Initial 20 Stern's Diatomic Element
	*/
	task.printSDS(n);
}
main();

Output

 Given N :  20
  0  1  1  2  1  3  2  3  1  4  3  5  2  5  3  4  1  5  4  7
// Kotlin program for
// Stern's Diatomic Series
class SternDiatomicSeries
{
	fun printSDS(n: Int): Unit
	{
		if (n <= 0)
		{
			return;
		}
		val dp: Array < Int > = Array(n)
		{
			0
		};
		// First element
		dp[0] = 0;
		if (n > 1)
		{
			// Second element
			dp[1] = 1;
		}
		var i: Int = 2;
		while (i < n)
		{
			if (i % 2 == 0)
			{
				// Even numbe
				dp[i] = dp[i / 2];
			}
			else
			{
				// Odd Number
				dp[i] = dp[(i - 1) / 2] + dp[(i + 1) / 2];
			}
			i += 1;
		}
		print("\n Given N : " + n + "\n");
		i = 0;
		// Display calculate sequence
		while (i < n)
		{
			print(" " + dp[i]);
			i += 1;
		}
	}
}
fun main(args: Array < String > ): Unit
{
	val task: SternDiatomicSeries = SternDiatomicSeries();
	val n: Int = 20;
	// n = 20
	/*
	    0 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 1 5 4 7
	    ---------------------------------------
	    Initial 20 Stern's Diatomic Element
	*/
	task.printSDS(n);
}

Output

 Given N : 20
 0 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 1 5 4 7




Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

New Comment