例7.7用递归求n的阶价乘Ⅱ!方法一:利用循环f(n)=n!=1*2*3*....(n-1)*n,用循环语句来编写非递归函数ff(intn)long2 long y= l;int i;2for (i= 1;i<= n; i++)y-y*i;return y;long f (intn)方法二:利用递归2long y;当n=1时3if(n == 1) y=l;f(n)=n!4else y=n * f(n-l);当n>1时n * (n - 1)!6return y;67
【例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; ⑥ }
n=0,17例7.7:递归方法求n!=n>1n*(n-1)!心#include<stdio.h>longf(intn)l/递归函数定义intmain()Klongy;2int n;if(n==1)y=1;③scanf("%d",&n);输入:55if(n>1)y=n*f(n-1);④6printf("%ldin".f(n));儿定义中调用自己?输出:120return y;return 0;8子?
7 例7.7:递归方法求 n!= 1 n=0,1 ① #include <stdio.h> n*(n-1)! n>1 ② long f(int n) //递归函数定义 ③ { long y; ④ if (n==1) y=1; ⑤ if(n>1) y=n*f(n-1); ⑥ // 定义中调用自己 ⑦ return y; ⑧ } ① int main() ② { int n; ③ scanf("%d",&n); ④ printf("%ld\n",f(n)); ⑤ return 0; ⑥ } f(5) n=5 y=5*f(4) f(4) n=4 y=4*f(3) f(3) n=3 y=3*f(2) f(2) n=2 y=2*f(1) f(1) n=1 y=1 return y return y y=2 return y y=6 return y y=24 return y y=120 输出:120 输入:5