7.3.2函数的递归调用一P125 在调用一个函数的过程中直接或间接调用函数本身 ①int f(int x)/定义 称为函数的递归调用。 ② ① int y,z; ① int f1(int x) int f2(int t) ③ ② int int a,c; ④ (y)∥调用 ③ ⑤ =f2(y)9 4 c-f1(a); return (2*Z 5 ⑦ }∥函数f直接调用自己 return(2*Z☑; return③ Fc); 函数1间接调用自己)}f1() f2(0 调f 直接遂归 调2 调f1 6
6 7.3.2 函数的递归调用—P125 在调用一个函数的过程中直接或间接调用函数本身 ① int f(int x)//定义 -称为函数的递归调用。 ② { int y,z ; ③ . ④ z=f(y);//调用 ⑤ . ⑥ return (2*z); ⑦ }//函数 f 直接调用自己 ① int f1(int x) ② { int y,z ; ③ . ④ z=f2(y); ⑤ . ⑥ return(2*z); ⑦ } ① int f2(int t) ② { int a, c ; ③ . ④ c=f1(a); ⑤ . ⑥ return (3+c); 函数 f1 间接调用自己⑦ } f ( ) 调f 调f2 调f1 f1( ) f2( ) 直接递归 间接递归
【例7.7】用递归求n的阶乘n! 方法一:利用循环 f()片n!=1*2*3*.(n-1)*n,用循环语句来编写非递归函数f: ①long f(intn) ② long y=1; ③ int i; ④ for(i=1;i<=n;it+)) ⑤ y=y*i; ⑥ return y; ⑦ 方法二:利用递归 ① long f(int n) ② long y; 当n=1时 ③ if(n=1)y=1; f(n)-n! ④ else y=n f (n-1); n*(m-1): 当n>1时 ⑤ return y; ⑥
【例7.7】用递归求n的阶乘n! ① long f (int n) ② { long y = 1; ③ int i; ④ for (i = 1; i <= n; i++) ⑤ y =y* i; ⑥ return y; ⑦ } 方法一:利用循环 f(n)= n! = 1*2*3*.(n-1) * n,用循环语句来编写非递归函数f: 方法二:利用递归 f(n)=n! = 1 当n = 1时 n * (n - 1)! 当n > 1时 ① long f (int n) ② { long y; ③ if (n == 1) y=1; ④ else y = n * f (n-1); ⑤ return y; ⑥ }