📜  递归练习问题套装7

📅  最后修改于: 2021-05-07 04:51:33             🧑  作者: Mango

问题1预测以下程序的输出。以下fun()通常做什么?

C++
#include 
using namespace std;
 
int fun ( int n, int *fp )
{
    int t, f;
 
    if ( n <= 1 )
    {
        *fp = 1;
        return 1;
    }
    t = fun ( n - 1, fp );
    f = t + *fp;
    *fp = t;
    return f;
}
 
int main()
{
    int x = 15;
    cout << fun(5, &x) << endl;
 
    return 0;
}
 
// This code is contributed by shubhamsingh10


C
#include 
 
int fun ( int n, int *fp )
{
    int t, f;
 
    if ( n <= 1 )
    {
        *fp = 1;
        return 1;
    }
    t = fun ( n-1, fp );
    f = t + *fp;
    *fp = t;
    return f;
}
 
int main()
{
    int x = 15;
    printf("%d\n",fun(5, &x));
 
    return 0;
}


Java
import java.io.*;
 
class GFG {
    static int fp = 15;
    static int fun ( int n)
    {
        int t, f;
      
        if ( n <= 1 )
        {
            fp = 1;
            return 1;
        }
        t = fun ( n - 1);
        f = t + fp;
        fp = t;
        return f;
    }
     public static void main (String[] args)
    {
        System.out.println(fun(5));
    }
}
// This code is contributed by shubhamsingh10


Python3
fp = 15
def fun ( n ):
    global fp
    if ( n <= 1 ):
        fp = 1
        return 1
     
    t = fun ( n - 1 )
    f = t + fp
    fp = t
    return f
 
# Driver code
 
print(fun(5))
 
# This code is contributed by shubhamsingh10


C#
using System;
  
class GFG{
    static int fp = 15;
    static int fun ( int n)
    {
        int t, f;
     
        if ( n <= 1 )
        {
            fp = 1;
            return 1;
        }
        t = fun ( n - 1 );
        f = t + fp;
        fp = t;
        return f;
    }
     
    static public void Main ()
    {
        Console.Write(fun(5));
    }
}
// This code is contributed by shubhamsingh10


C++
#include 
using namespace std;
void fun(int n)
{
    if(n > 0)
    {
        fun(n - 1);
        cout << n <<" ";
        fun(n - 1);
    }
}
 
int main()
{
    fun(4);
    return 0;
}
 
// This code is contributed by shubhamsingh10


C
#include 
 
void fun(int n)
{
    if(n > 0)
    {
        fun(n-1);
        printf("%d ", n);
        fun(n-1);
    }
}
 
int main()
{
    fun(4);
    return 0;
}


Java
import java.util.*;
  
class GFG{
static void fun(int n)
{
    if(n > 0)
    {
        fun(n - 1);
        System.out.print(n+" ");
        fun(n - 1);
    }
}
 
public static void main(String[] args)
{
    fun(4);
}
}
// This code is contributed by Shubhamsingh10


Python3
def fun(n):
     
    if(n > 0):
        fun(n - 1)
        print(n,end=" ")
        fun(n - 1)
 
# driver code
 
fun(4)
 
# This code is contributed by shubhamsingh10


C#
using System;
 
class GFG{
    static void fun(int n)
    {
        if(n > 0)
        {
            fun(n - 1);
            Console.Write(n+" ");
            fun(n - 1);
        }
    }
       
    static public void Main ()
    { 
        fun(4);  
    }
}
 
// This code is contributed by shubhamsingh10


Javascript


输出:

8 

程序将计算第n个斐波那契数。语句t = fun(n-1,fp)给出第(n-1)个斐波那契数,* fp用于存储第(n-2)个斐波那契数。 * fp的初始值(在上述程序中为15)无关紧要。接下来的递归树显示了执行fun(5,&x)的从1到10的所有步骤。

(1) fun(5, fp)
                              /           \
                         (2) fun(4, fp)  (10) t = 5, f = 8, *fp = 5
                         /          \
                   (3) fun(3, fp)  (9) t = 3, f = 5, *fp = 3
                  /            \
           (4) fun(2, fp)      (8) t = 2, f = 3, *fp = 2
          /          \
   (5) fun(1, fp)   (7) t = 1, f = 2, *fp = 1
   /
(6) *fp = 1

问题2:预测以下程序的输出。

C++

#include 
using namespace std;
void fun(int n)
{
    if(n > 0)
    {
        fun(n - 1);
        cout << n <<" ";
        fun(n - 1);
    }
}
 
int main()
{
    fun(4);
    return 0;
}
 
// This code is contributed by shubhamsingh10

C

#include 
 
void fun(int n)
{
    if(n > 0)
    {
        fun(n-1);
        printf("%d ", n);
        fun(n-1);
    }
}
 
int main()
{
    fun(4);
    return 0;
}

Java

import java.util.*;
  
class GFG{
static void fun(int n)
{
    if(n > 0)
    {
        fun(n - 1);
        System.out.print(n+" ");
        fun(n - 1);
    }
}
 
public static void main(String[] args)
{
    fun(4);
}
}
// This code is contributed by Shubhamsingh10

Python3

def fun(n):
     
    if(n > 0):
        fun(n - 1)
        print(n,end=" ")
        fun(n - 1)
 
# driver code
 
fun(4)
 
# This code is contributed by shubhamsingh10

C#

using System;
 
class GFG{
    static void fun(int n)
    {
        if(n > 0)
        {
            fun(n - 1);
            Console.Write(n+" ");
            fun(n - 1);
        }
    }
       
    static public void Main ()
    { 
        fun(4);  
    }
}
 
// This code is contributed by shubhamsingh10

Java脚本


输出

1 2 1 3 1 2 1 4 1 2 1 3 1 2 1
fun(4)
                   /
                fun(3), print(4), fun(3) [fun(3) prints 1 2 1 3 1 2 1]
               /
           fun(2), print(3), fun(2) [fun(2) prints 1 2 1]
           /
       fun(1), print(2), fun(1) [fun(1) prints 1]
       /
    fun(0), print(1), fun(0) [fun(0) does nothing]