answersLogoWhite

0


Best Answer

#include"stdio.h"
#include"conio.h"
int fabo(int);
void main()
{
int result=0,a=1,b=1,c;
printf("enter upto which you want to generate the series");
scanf("%d",&c);
result=fabo(c);
printf("%d\n%d\n",a,b);
printf("the fabonnaci series is %d\n",result);
getch();
}
int fabo(int n)
{
if (n==1);
return 1;
else if(n==2);
return 1;
else
return fabo(n-1)+fabo(n-2);
}

User Avatar

Wiki User

14y ago
This answer is:
User Avatar
More answers
User Avatar

Wiki User

12y ago

#include<stdio.h>

#include<conio.h>

#include<string.h>

#define SIZE 10

main () {

char non_terminal;

char beta,alpha;

char production[SIZE];

int index=3; /* starting of the string following "->" */

printf("Enter the grammar:\n");

scanf("%s",production);

non_terminal=production[0];

if(non_terminal==production[index]) {

alpha=production[index+1];

printf("Grammar is left recursive.\n");

while(production[index]!=0 && production[index]!='|')

index++;

if(production[index]!=0) {

beta=production[index+1];

printf("Grammar without left recursion:\n");

printf("%c->%c%c\'",non_terminal,beta,non_terminal);

printf("\n%c\'->%c%c\'|E\n",non_terminal,alpha,non_terminal);

}

else

printf("Grammar can't be reduced\n");

}

else

printf("Grammar is not left recursive.\n");

}

getch();

}

This answer is:
User Avatar

User Avatar

Wiki User

14y ago

#include

int factorial(int n){
if(n 1)
return 1;
return n*factorial(n-1);
}

int main(int argc, char *argv[]){

if(argc != 2){
printf("%s number", argv[0]);
exit(1);
}

printf("%s! = %d", argv[0], factorial(atoi(argv[1])));
return 0;
}

This answer is:
User Avatar

User Avatar

Wiki User

14y ago

Following function calculates factorial of a number using recursion. unsigned int factorial(unsigned int a)

{

if (a == 1)

return 1;

else

{

a *= factorial(a-1);

return a;

}

} recursion n. see recursion.

This answer is:
User Avatar

User Avatar

Wiki User

14y ago

import java.io.*;

class bin

{

InputStreamReader in=new InputStreamReader(System.in);

BufferedReader br=new BufferedReader(System.in);

int a[]=new int[5];

int i,j,r;

System.out.println("Enter range");

r=Integer.parse.Int(br.readLine());

System.out.println("Enter number");

for(i=0;i<5;i++)

{

a[i]=Integer.parse.Int(br.readLine());

}

for(i=0;i<5;i++)

for(j=i+1;j<i;j++)

{

if(a[j]>a[i])

System.out.println(a[i]);

}

for(i=0;i<5;i++)

{

System.out.println(a[i]);

}

}

This answer is:
User Avatar

User Avatar

Wiki User

13y ago

/*Algorithm - First, we will create a Max heap. Then, we pick the top

element (max element) from the heap and swap it with the last element

of the array. Now, the max element is in its correct place. Next, we

consider the array to be of size 'n-1' and call heapify on the

0th element so as to create the heap again. We do the same process

until all the elements are in their correct place */

void heapsort(int a[], int n)

{

/* To find the first node from which we will start heapifying.

Usually, this is the last node in the 2nd last layer of the binary

heap*/

int templog = (int)pow(2,(ceil(log((float)n))-1)) - 1;

//Create a min heap

for(int i = templog ;i >= 0 ; i--)

{

heapify(a, int i);

}

//Extract top element from heap and swap with last element

int temp_n = n;

while(temp_n>0)

{

swap(a,0,temp_n);

temp_n--;

heapify(a,0,temp_n);

}

}

void heapify(int a[], int v, int n)

{

//For a node v, its children are 2*v+1 and 2*v+2

//The case where node has no left or right child

if(2*v+1 >= n)

return;

//The case where node has a left child but not a right child

else if(2*v+2 >= n)

{

if(a[2*v+1] > a[v]) //if left child greater than parent

{

swap(a,v,2*v+1);

heapify(a,2*v+1);

}

}

//The case where node has both left and right child

else

{

//If left child greater than parent and right child

if((a[2*v+1] > a[v]) && (a[2*v+1] > a[2*v+2]))

{

swap(a,v,2*v+1);

heapify(a,2*v+1);

}

//If right child greater than parent and left child

else if((a[2*v+2] > a[v]) && (a[2*v+2] > a[2*v+1]))

{

swap(a,v,2*v+2);

heapify(a,2*v+1);

}

}

}

void swap(int a[],int left,int right)

{

int temp = a[left];

a[left] = a[right];

a[right] = temp;

}

This answer is:
User Avatar

Add your answer:

Earn +20 pts
Q: Write a program to remove left recursion?
Write your answer...
Submit
Still have questions?
magnify glass
imp
Continue Learning about Engineering

What is the difference between left recursion and right recursion in a grammar?

Recursion is what it's called when a function calls itself. When a function calls itself immediately before returning, it's called tail recursion. Tail recursion can be more efficiently written as iteration. In fact a good compiler will recognize tail recursion and compile it as iteration. There is no such thing as left or right recursion in C programming.


C program on left factoring in compiler design?

how to create a c program for left factoring.


What are the advantages of the recursion in c plus plus?

Any problem that can be solved by dividing the problem into smaller problems of the same type is a good candidate for recursion. However, there are actually very few applications that cannot be resolved more efficiently with an iterative loop. It therefore pays to know when recursion is unavoidable and when it is optional. The main benefit to recursion is that each instance of the function maintains its own set of non-static local variables completely independently of all other instances. But if these variables are of no use to the function when a recursive call returns, then an iterative implementation would be more efficient. Function calls are expensive in terms of memory consumption and performance, so the fewer we make, the better. A classic example of recursive application is the quicksort algorithm. In simple terms, quicksort is a function that accepts a subset of data. The data is usually stored in an array and the function accepts the left and right index of the subset to be sorted. Initially this will be lower and upper bounds of the entire array, but if the indices indicate a subset with fewer than 2 items, the function immediately exits. This effectively defines the return path from the recursions. Assuming there are 2 or more items, the function selects one of the items (the pivot) and then sorts the array such that items less than the pivot are placed to its left, and items greater or equal to its right. This moves the pivot into its final position, but the items on either side may still be unsorted. Thus the function calls itself twice, once for each of these subsets, which gradually reduces the problem down into smaller and smaller subsets until a subset has fewer than 2 items, at which point the recursion unwinds to the previous instance. Recursion is required because when the first recursive call returns, the subset to the left of the pivot is guaranteed to be sorted, but the subset to the right is not. This means we must maintain local variables in order to determine the lower and upper bounds of that subset. Although quicksort is an elegant application of recursion, there is still room for improvement. Firstly, it is better to make a recursive call upon the smaller of the two subsets. The smaller the subset, the fewer recursions that will be incurred sorting it. Secondly, since the second recursion is also the last statement in the function, there is no need to maintain the local variables when it returns. Thus the second recursion can be implemented as a tail call. This effectively means we modify the existing local variables to suit and then recall the same instance (with a goto). This reduces the depth of recursion by one function call per recursion which will quickly add up to a significant boost in efficiency.


Is a left brace in a c program always followed by a right brace later in the program?

Yes. Braces are used to group similar pieces of code in a C program


How do you write a c program to shift the entered number by 3 bits left and also 5 bits right and display the result?

Input and output should be trivial; the core of it is: m = (n5Note: it is not the same as m = n>>2

Related questions

What is the difference between left recursion and right recursion in a grammar?

Recursion is what it's called when a function calls itself. When a function calls itself immediately before returning, it's called tail recursion. Tail recursion can be more efficiently written as iteration. In fact a good compiler will recognize tail recursion and compile it as iteration. There is no such thing as left or right recursion in C programming.


If your left handed how do you make your binder work so you can write in it?

You remove the page and move it to the left side :)


Write a program using 8086 instructions to double a number?

There isn't a reason to write a complete program to do this; in any assembly language just shift the value 1 bit to the left to double it.


Is it Safe to remove neroxml?

neroxml is part of a Nero burning program that can get left behind after uninstalling. If you have uninstalled Nero in the past then it is perfectly safe to remove the file.


C program on left factoring in compiler design?

how to create a c program for left factoring.


How to write a C program for left factoring?

Name two variables x and y. Divide the largest by smallest. If remainder is zero then the smallest is the HCF.


Write an assembly program to multiply a numberr by 4?

To multiply a number by 4, do a left shift twice. If the number is in the accumulator, do... RAL RAL XRI 0FCH


Do you write from right to left or left to right in Japanese?

They write left to right if they write horizontally. When writing vertically they would write from right to left.


How do you write a program in c for left factoring?

Store both the number in two variable X and Y. Divide X by Y. If remainder is zero then Y is HCF.


Who is faster right handed people or left handed people?

It depends. Left handed but people who write with both are same. If you write with left then you could be slow because you have to move your left 'cos you write left-to-right. If you write with right then you could be fast because it is easier.


How do you write 5 percent in decimals?

To write 5% in decimal: 1. Remove the % sign. 2. Divide 5 by 100 or simply move the decimal point two places to the left. therefore, 5% = 0.05 in decimal


How do you write 66 percent as a decimal?

To write 66% as a decimal, just divide it by 100% or just remove the % sign a nd move the decimal poi nt 2 places to the left. 66% = 66%/100% = 0.66