Home > Blockchain >  Why is my code not dividing inside of the function?
Why is my code not dividing inside of the function?

Time:05-21

I want to create a hailstone sequence using recursive function. But the even number is not getting divided, I want to know where and what did I do wrong?

#include <stdio.h>

int sequence(int n);

int main()
{
    int n = 0;
    printf("\nEnter a number: ");
    scanf("%d", &n);
    printf("\nThe sequence is as follows:");
    sequence(n);
    return 0;
}

int sequence(int n)
{
    printf("%d\t ", n);

    if (n == 1) {
        return 0;
    } else if (n % 2 == 0) {
        n = n / 2;
    } else {
        return n = sequence(n * 3   1);
    }
}

CodePudding user response:

The function does nothing in this else statement

else if (n % 2 == 0)
{
    n = n / 2;
}

Define the function at least like

int sequence(int n)
{
    printf("%d\t ", n);

    if (n == 1)
    {
        return 0;
    }
    else
    {
        return sequence( n % 2 == 0 ? n / 2 :  n * 3   1 );
    }
}

Though it seems the return type of the function does not make a sense. So the function can be defined like

void sequence(int n)
{
    printf("%d\t ", n);

    if ( n != 1 )
    {    
        sequence( n % 2 == 0 ? n / 2 :  n * 3   1 );
    }
}
  • Related