资源描述
C语言-阶乘算法(迭代和递归)
记得写注释
阶乘 n! =n* (n-1) * (n-2) * (n-3) * (n-4). *1并且0的阶乘为1
一、迭代算法
迭代法也称辗转法,是一种不断用变量的旧值递推新值的 过程,比方计算累加和,累乘积等。
1、思路:同累乘积,计算出n* (n-1) * (n-2) * (n-
3) * (n-4). *1 的结果。
2、技术点:for语句
二、递归算法递归是指函数的定义中使用函数自身的方法。
L思路:1、递归终止条件;2、提取重复的逻辑,缩小问 题规模。
1 (n = 0)
n! =z 、n * (n — 1)! ( n > 0 )
2、技术点:递归函数、if语句编程实现:编写一个函数,实现非负整数n !的计算。
方法一:迭代算法
#include <stdio.h> int main() {int jc (int n);
int n;printf (”请输入非负整数n的值:*');
scanf (f,%dnz &n);
printf("\n2d!=%d\n",n,jc(n)); return 0;
}
int jc (int n)
( -int//result用来计算阶乘结果
for (;n>=l;n) result*=n;return result;
)
方法二:递归算法
#include <stdio.h>
int main() {int jc (int n);
int n;printf (”请输入正整数n的值:“);
scanf("%d",&n);
printf(M\n%d!=%d\nMf n,jc (n)); return 0;
)
int jc (int n)
( -if (n==0) return/递归终止条件
else return jc (n-1) *n; //重复的逻辑编程实现:编写一个函数,实现1!+2! + 3!+4 ! +5!的计算。
方法一:迭代算法
♦include <stdio.h> int main() {int Ls=O,p=\; //s记录阶乘和
for(i=l;i<=5;i++) (
p=p * i •,/ /先计算阶乘 s=s+p; //再求和}
printf(Hl!+2!+3!+4!+5!=%d\nMfs); return 0;
)
方法二:递归算法
#include <stdio.h>
int main() {int jc(int n);
int//s记录阶乘和for(i=l;i<=5;i++)
s+=jc(i);
printf(nl!+2!+3!+4!+5!=%d\nMrs); return 0;
)
int jc(int n)
( -if (n==0) return 1; //递归终止条件
else return jc (n-1) *n; //重复的逻辑
展开阅读全文