## Tuesday, 18 May 2021

### Linear Recursion in C

If a recursive function is calling itself for only once then, the recursion is linear.
Pseudocode:-
fun(int n)
{

if (n > 0)
{

...
fun(n - 1);     // Calling itself only once

...
}

}
Note: The fun() is calling itself for only once.

Understanding linear recursion by a simple problem
C program to find a cube of the positive number using Recursion.
#include <stdio.h>

int fun(int n)
{

static int x;
if (n > 0)

{
x++;

return fun(n - 1) + x * x;
}

}
int main()

{
int a;

printf("number ");
scanf("%d", &a);

printf("%d", fun(a));
return 0;

}
Output:-

Tracing the above Recursion:-

C program to find the factorial of a positive number using Recursion.

#include <stdio.h>

int fun(int n)
{

if (n == 0)
{

return 1;
}

else
{

return fun(n - 1) * n;
}

}

int main()
{

int x;
printf("number ");

scanf("%d", &x);
printf("%d\n", fun(x));

return 0;

}

Output:-

## Saturday, 1 May 2021

If a Recursive function calls itself and  that recursive call is not the last statement of the recursive function then the recursion is known as Head recursion.

int fun(int n)

{

if (n > 0)

{

fun(n - 1);

...

...

}

}

Note:-  Some statements are executed at return time.

C program to calculate the factorial of nth number using head recursion.

#include <stdio.h>

int fun(int n)

{

if (n == 0)

{

return 1;

}

else

{

return fun(n - 1) * n;

}

}

int main()

{

int x;

printf("number ");

scanf("%d", &x);

printf("%d\n", fun(x));

return 0;

}

Output:-

C program to find the square of any positive number using head recursion.

#include <stdio.h>

int fun(int n)

{

static int x = 0;

if (n > 0)

{

x++;

return fun(n - 1) + x;

}

return 0;

}

int main()

{

int b;

printf("number ");

scanf("%d", &b);

printf("%d", fun(b));

return 0;

}

Output:-

## Tuesday, 27 April 2021

### Tail recursion in C

If a recursive function calls itself and that recursive call is the last statement in the function to execute then the recursion is known Tail recursion.

Structure of Tail recursion:-

int fun(int n)

{

if( n >= 0)

{

...

...

fun(n-1);

}

}

Note: All the statements in the function are executed before the recursive call.

Problem:-

C program to count number in descending order using Tail recursion.

#include <stdio.h>

int fun(int n)

{

if (n > 0)

{

printf("%d\n", n);

return fun(n - 1);

}

}

int main()

{

int a;

printf("number");

scanf("%d", &a);

fun(a);

return 0;

}

Output:-

## Thursday, 22 April 2021

### Recursion in C

Recursion is a process in which a function calls itself. In a programming language, if a program allows calling of a function inside the same function, then the function is termed as recursive function and this  process of calling itself is called Recursion.

There are two main requirements for a function to be recursive:

1. Terminating condition -  the function must return when the terminating condition is satisfied.

2. Recursive call - the function must call itself.

Example:-

int fun()

{

...

...

fun();

...

...

}

Here we can see that, the function fun( ) calls itself.

C program:-

C program to calculate the the sum of the ‘nth’ number using recursion.

#include <stdio.h>

int fun(int n)

{

if (n == 0)

return 0;

else

return fun(n - 1) + n;

}

int main()

{

int sum = 0, x;

printf("number");

scanf("%d", &x);

sum = fun(x);

printf("%d\n", sum);

return 0;

}

## Sunday, 11 April 2021

### Sum of two number without using '+' operator

Idea 1:-

A half adder has two inputs for the two bits to be added and two outputs one from the ‘sum’ and the other from the ‘carry’ into the higher adder position. A circuit is called a carrying  signal from the addition of the sum of the less significant bits from the X-OR gate the out from AND gate.

Truth table :-

 A B SUM CARRY 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1

In the truth table.  you can see I have provided all possible combinations of  A and B. Now if you observe the truth table clearly,  the sum is nothing but A X-or  B. As we know in X-or two different bits give the output  1.

Carry is equal to A and B because we have like 1, 1 input combination the output is equal to one. Therefor

SUM = A  XOR  B

Carry = A  AND  B

C program

#include <stdio.h>

int main()

{

int a, b, sum, carry;

printf("a=");

scanf("%d", &a);

printf("b=");

scanf("%d", &b);

while (b != 0)

{

sum = a ^ b;

carry = (a & b) << 1;

a = sum;

b = carry;

}

printf("sum = %d", sum);

return 0;

}

Explanation of program

Step 1:  Declared two integer type variable a and b. sum and carry taken from to logic gate which is XOR and AND.

Step 2: Give the input in an integer type variable ‘a’ and ‘b’ by scanf() function.

Step 3: Use while loop check b is not equal to zero. the sum is equal to a^b then after carry is equal to a&b <<1 . and stored the value of sum in a. and stored the value of carry in b.

Step 4: Print the sum.

Output:-

Idea 2

Using while loop

C program

#include <stdio.h>

int main()

{

int a, b;

printf("a=");

scanf("%d", &a);

printf("b=");

scanf("%d", &b);

if (b > 0)

{

while (b != 0)

{

a++;

b--;

}

}

else if (b < 0)

{

while (b != 0)

{

a--;

b++;

}

}

printf("sum = %d\n", a);

return 0;

}

Output:-

### While loop in c

A while loop allows a part of the code to be executed multiple times depending upon a given Boolean condition. it called a pre-tested loop. Then the ‘While loop’ is mostly used in the case where the number of repetitions is no known in advance.

Syntax of while loop:-

While(condition)

{

Statement;

Increament/decreasement;

}

Flowchart:-

Example:-

Problem 1

Write a C program to calculate the sum of two numbers without using the plus operator.

Algorithm

Step 1   a++;  b--;

Step 2   Repeat Step 1 until b becomes 0

Program of the above problem

#include <stdio.h>

int main()

{

int a, b;

printf("a=");

scanf("%d", &a);

printf("b=");

scanf("%d", &b);

while (b != 0)

{

a++;

b--;

}

printf("sum = %d\n", a);

return 0;

}

Output:-

Note:  This logic is design for only positive integers.

Problem 2

Write a C program to the counting of the number 1 to 10 using a while loop.

#include<stdio.h>

int main()

{

int i=1;

while(i<=10)

{

printf("%d\n", i);

i++;

}

return 0;

}

Output:-

Problem 3

Write a C program to print the 2s table using a while loop.

#include <stdio.h>

int main()

{

int a, n, i;

printf("number");

scanf("%d", &n);

(i = 1);

while (i<=n)

{

a = 2 * i;

{

printf("%d\n", a);

}

i++;

}

}

Output:-

## Friday, 9 April 2021

### Some basic C programs using Conditional Operator

Conditional operator simply returns one value when the condition is true and returns another value if the condition is false. It also knows as a ternary operator.

Syntax of a ternary operator

(condition) ? Expression: Expression;

Example

(a>0)?1:0; evaluates to true so 1.

Now understand the ternary operator with the help of some basic problem.

Problem 1

Write a C program to check the numbers are positive or negative.

#include <stdio.h>

int main()

{

int a, c;

printf("Enter the number ");

scanf("%d", &a);

c = (a>0) ? printf("positive number ") : printf("Negative number ");

// (a > 0) ? printf("positive number") : printf("Negative number");

}

Understanding the above code:

Declared two integer type variables which are a and c.

Input is taken in variable ‘a’ by  ‘scanf( )’ function.

Integer type variable c is used to store the decision based upon the condition by the compiler.

Output

Using this in the above code

(a > 0) ? printf("positive number") : printf("Negative number");

With both the code output is similar.

Problem 2

Write a C program to determine the greatest number between the three numbers.

#include <stdio.h>

int main()

{

int a, b, c, big;

printf("a=");

scanf("%d", &a);

printf("b=");

scanf("%d", &b);

printf("c=");

scanf("%d", &c);

big = a > b ? (a > c ? a : c) : (b > c ? b : c);

printf("Greatest number %d\n", big);

}

Output

## Wednesday, 7 April 2021

### Conditional Operator in C

Conditional operator is a Ternary operator available in list of operators in the C language. It requires three operands. Conditional statements are used to make decision based upon condition. Ternary operator requires two special symbols (‘?’ and ‘:’) to express it.

The program execution of conditional operator is just like if-else conditional statement.

Syntax of conditional operator

Expression 1? Expression 2: Expression 3;

Working of Ternary Operator

As in Expression 1? Expression 2:  Expression3. Expression 1 is the Boolean expression. If Expression1 evaluates to 0 which is a Boolean expression then that simply means FALSE and if the Expression1 evaluates to 1 this simply means TRUE therefore Expression3 or Expression2 will get evaluated based on Expression1.

For example

#include<stdio.h>

int main ()

{

int a, c;

printf("Enter the number  ");

scanf("%d", &a);

c = (a>5) ? printf("True") : printf("False");

}

Output:

## Tuesday, 30 March 2021

### String Format in Python

Formatting string enables the capability to add dynamic content or string to it in an easy way. It allows to update contents in a string in simpler way.

String Format using format () method

Syntax: template_string.format(positional_args, keyword_args)

The template string contains the replacement fields which can be replaced using the positional_args and keyword_args used in the method. The method returns the formatted string.

In the template string, the replacements fields are enclosed within curly braces “{  }”. Rest of the string content remains unchanged.

Using positional arguments

print('{0} {1} the {2} nicely'.format('This', 'formats', 'string'))

Here,` <template_string>` is `'`{0} {1} the {2} nicely`'`. The replacement fields are `{0}`, `{1}`, and `{2}`` `with zero-based positional arguments 'This', 'formats', 'string'. The replacements fields are replaced with the corresponding positional arguments by the format method.

Using keyword arguments

print('{name} is {age} years old'.format(name='Python', age= 30))

Here, the replacement fields are `{name}`, `{age``}and the corresponding keyword arguments with values. Each fields are replaced with corresponding keyword argument values.`