问题1 预测以下程序的输出。下面的fun()一般做什么?
null
C++
#include <iostream> using namespace std; int fun( int n, int * fp) { int t, f; if (n <= 2) { *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; } |
C
#include <stdio.h> int fun ( int n, int *fp ) { int t, f; if ( n <= 2 ) { *fp = 1; return 1; } t = fun ( n-1, fp ); f = t + *fp; *fp = t; return f; } int main() { int x = 15; printf ( "%d" ,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 <= 2 ) { 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 < = 2 ): 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 <= 2 ) { 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 |
Javascript
<script> //Javascript Implementation var fp = 15; function fun( n ) { var t, f; if ( n <= 2 ) { fp = 1; return 1; } t = fun ( n - 1 ); f = t + fp; fp = t; return f; } // Driver Code document.write(fun(5)); // This code is contributed by shubhamsingh10 </script> |
输出
5
该程序计算第n个斐波那契数。语句t=fun(n-1,fp)给出了第(n-1)个斐波那契数,*fp用于存储第(n-2)个斐波那契数。*fp的初始值(在上述程序中为15)无关紧要。下面的递归树显示了从1到10的所有步骤,用于执行fun(5,&x)。
(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 <iostream> 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 <stdio.h> 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
<script> function fun(n) { if (n > 0) fun(n - 1); document.write(n+ " " ) fun(n - 1); } // driver code fun(4) // This code is contributed by bobby. </script> |
输出
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]
如果您发现任何答案/代码不正确,或者您想分享有关上述主题的更多信息/问题,请写下评论。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END