打印斐波那契数列而不使用循环



是否有一种方法可以在不调用循环的情况下打印前n个fibonacci数

for(int i=1; i<n; i++)
    System.out.println(computeF(n));

从主程序?

public static int computeF(int n)
{
    if(n==0)
    {
        return 0;
    }
    else if(n==1)
    {
        return 1;
    }
    else
    {
        return computeF(n-1)+computeF(n-2); 
    }
}

可能有一种在递归中打印中间值的方法,它将打印斐波那契数。

可以使用尾部递归

 public class Fid   
  {   
    static int n1=0;
    static int n2=1;
    static int nex=0;
    public static  void fb(int n)
 {
   if(n<10)
    {
      if(n==0)
       {
         System.out.print(" "+n);
         n++;
         fb(n);
       }
        else
           if(n==1)
       {
         System.out.print(" "+n);
         n++;
         fb(n);
       }
        else{ 
            nex=n1+n2;
            System.out.print(" "+nex);
            n1=n2;
            n2=nex;
            n++;
            fb(n);                
            }           
      }        
    }
    public static void main(String[] args)
    {
      fb(0);                                          
    }
}

使用递归:-

  class FibonacciRecursion
{
private static int index = 0;
private static int stoppingPoint = 9;
public static void main (String[] args)
{
  int n1 = 0;
  int n2 = 1;
  fibonacciSequence(n1, n2);
}
public static void fibonacciSequence(int n1, int n2)
{
  System.out.println("index: " + index + " -> " + n1);
  // make sure we have set an ending point so this Java recursion
  // doesn't go on forever.
  if (index == stoppingPoint)
    return;
  // make sure we increment our index so we make progress
  // toward the end.
  index++;
  fibonacciSequence(n2, n1+n2);
}
}

//Java程序打印用户给出的最多n项的斐波那契数列而不使用循环

进口java.util。*;

斐波那契公共类{

public static void main(String[] arguments){

Scanner s = new Scanner(System.in);
System.out.print("Enter the no of terms :");
int no_of_terms= s.nextInt(),a=1,b=0,c=0,count=1;
System.out.print("0 ");//printing the first term
fib(no_of_terms,a,b,c,count);}

public static void fib(int no_of_terms,int a,int b,int c,int count){

//when value of count will be equal to the no of terms given by user the program will terminate
if (count==no_of_terms)
   System.exit(0);
else
{
  count++;
  System.out.print(a+" ");
  c=b;
  b=a;
  a=b+c;//calculating the next term
  fib(no_of_terms,a,b,c,count);//calling the function again with updated value
}

}}

import java.util.*; 
public class Fibonacci{
  public static void main(String[] args) {    
    Scanner sc = new Scanner(System.in);
    System.out.println("Enter a no.");
    int n= sc.nextInt(),a=1,b=0,c=0;
    num(n,a,b,c);
  }
  public static void num(int n,int a,int b,int c){
    if(a<=n){
      System.out.println(a);
      c=b;
      b=a;
      a=b+c;
      num(n,a,b,c);
    }
  }
}

最新更新