问题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]