Search code examples
cfibonacciperfect-square

Perfect square in fibonacci sequence?


Create a program to find out the first perfect square greater than 1 that occurs in the Fibonacci sequence and display it to the console.

I have no output when I enter an input.

#include <stdio.h>
#include <math.h>

int PerfectSquare(int n);
int Fibonacci(int n);

main()
{
    int i;
    int number=0;

    int fibNumber=0;
    int psNumber=0;


    printf("Enter fibonacci number:");
    scanf("%i",&number);


    fibNumber = Fibonacci(number);

    psNumber = PerfectSquare(fibNumber);

    if(psNumber != 0){
        printf("%i\n",psNumber);
    }
}



int PerfectSquare(int n)
{

    float root = sqrt(n);
    if (n == ((int) root)*((int) root))
        return root;
    else
        return 0;
}

int Fibonacci(int n){
    if (n==0) return 0;
    if (n==1) return 1;
    return( Fibonacci(n-1)+Fibonacci(n-2) );
}

Solution

  • Luke is right. If your input is n, then the Fibonacci(n) returns the (n+1)th Fibonacci number. Your program check whether (number +1)th is perfect square or not actually.

    If you enter 12, then there is output. Because the 13th Fibonacci number is 144. And it is perfect square. PS: print fibNumber instead of psNumber.

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