﻿ C Program: Hailstone Sequence of a given number upto 1 - w3resource

# C Exercises: Hailstone Sequence of a given number upto 1

## C Recursion : Exercise-18 with Solution

Write a C program to find the Hailstone Sequence of a given number up to 1.

Sample Solution:

C Code:

``````#include <stdio.h>

// function to generate next number
int getNextValue(int aNum)
{
int i = aNum;
if (i % 2 == 0)
{
i = i/2;
}
else
{
i = 3 * i + 1;
}
return (i);// returning the value of next number to the called function
}
// function to generate Hailstone number
void getHailstone(int aNum)
{
int hlSe = aNum;
if (hlSe == 1)
{
printf("%i ", hlSe);
}
else
{
printf(" %i ", hlSe);
getHailstone(getNextValue(hlSe));// calling the function itself recursively
}
}
// Function to count the length of the Hailstone sequence
int countLength(int aNum)
{
int hlSe = aNum;
if(hlSe == 1)
{
return 1;
}
else
{
return 1+countLength(getNextValue(hlSe));// calling the function itself recursively
}

}

int main(int argu)
{
int aNum;
printf("\n\n Recursion : Hailstone Sequence of a given number upto 1 :\n");
printf("--------------------------------------------------------------\n");
printf(" Input any number (positive) to start for Hailstone Sequence : ");
scanf("%i", &aNum);

printf("\n The hailstone sequence starting at %i is : \n", aNum);
getHailstone(aNum);
printf("\n\n");
printf(" The length of the sequence is %i. \n\n", countLength(aNum));
return 0;
}
```
```

Sample Output:

``` Recursion : Hailstone Sequence of a given number upto 1 :
--------------------------------------------------------------
Input any number (positive) to start for Hailstone Sequence : 13

The hailstone sequence starting at 13 is :
13  40  20  10  5  16  8  4  2 1

The length of the sequence is 10
```

Flowchart:

C Programming Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.

﻿

## C Programming: Tips of the Day

__FILE__ macro shows full path

```#include <string.h>

#define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
For Windows use '\\' instead of '/'.
```

Ref : https://bit.ly/3iEWRoT

We are closing our Disqus commenting system for some maintenanace issues. You may write to us at reach[at]yahoo[dot]com or visit us at Facebook