自定义函数fac1用递推方法求n!,自定义函数fac2用递归方法求n!,主函数中输入整数n(0≦n≦10)后,分别调用函数fac1和函数fac2求n!,最后输出调用的结果值进行对比。
自定义函数fac1用递推方法求n!,自定义函数fac2用递归方法求n!,主函数中输入整数n(0≦n≦10)后,分别调用函数fac1和函数fac2求n!,最后输出调用的结果值进行对比。
参考运行截图:
递归和递推区别
1,从程序上看,递归表现为自己调用自己,递推则没有这样的形式。
2,递归是从问题的最终目标出发,逐渐将复杂问题化为简单问题,最终求得问题
是逆向的。递推是从简单问题出发,一步步的向前发展,最终求得问题。是正向的。
3,递归中,问题的n要求是计算之前就知道的,而递推可以在计算中确定,不要求计算前就知道n。
4,一般来说,递推的效率高于递归(当然是递推可以计算的情况下)
最容易理解就是结合一个经典的例子:斐波那契数列
递归求解
int fib(n){
return n < 2 ? 1 : fib(n-1)+f(n-2);
}
递推求解
int fib(int n){
int fn = 1;
int fn_1 = 0;
for(int i=0; i<n; i++) {
int t = fn
fn = fn + fn_1;
fn_1 = t;
}
return fn;
}
递推 Inductive 是从1 往 n推(未知)
递归Recursive是从n(未知)往1推, 再层层返回
源代码:
#include<stdio.h>
int main()
{
int n;
printf("请输入整数n(0≤n≤10):");
scanf_s("%d", &n);
printf("用递推方法求:%d!=%d\n", n, fac1(n));
printf("用递归方法求:%d!=%d\n", n, fac2(n));
return 0;
}
int fac1(int x)//递推
{
int i, k = 1;
for (i = 1; i <=x; i++)
k = k * i;
return(k);
}
int fac2(int x)//递归
{
int f = 1;
if (x == 1) {
return 1;
}
else {
return x * fac2(x - 1);
}
}
自定义函数fac1用递推方法求n!,自定义函数fac2用递归方法求n!,主函数中输入整数n(0≦n≦10)后,分别调用函数fac1和函数fac2求n!,最后输出调用的结果值进行对比。相关推荐
- 【数字信号处理】线性常系数差分方程 ( 根据 “ 线性常系数差分方程 “ 与 “ 边界条件 “ 确定系统是否是 “ 线性时不变系统 “ 案例二 | 修改边界条件 | 使用递推方法证明 )
文章目录 一.根据 " 线性常系数差分方程 " 与 " 边界条件 " 确定系统是否是 " 线性时不变系统 " 案例 1.使用递推方法证明 2 ...
- 【数字信号处理】线性常系数差分方程 ( 根据 “ 线性常系数差分方程 “ 与 “ 边界条件 “ 确定系统是否是 “ 线性时不变系统 “ 案例 | 使用递推方法证明 )
文章目录 一.根据 " 线性常系数差分方程 " 与 " 边界条件 " 确定系统是否是 " 线性时不变系统 " 案例 1.使用递推方法证明 2 ...
- 编写一个C程序,实现以下功能:编写一个函数decTobin(int n),该函数能将一个十进制数n转换成二进制数,输入13 输出 1101。在main函数中输入整数n,调用函数,输出它的二进制
题目要求: 编写一个C程序,实现以下功能: //编写一个函数decTobin(int n),该函数能将一个十进制数n转换成二进制数,输入13 输出 1101. //在main函数中输入整数n,调用函数 ...
- 枚举算法:概率计算。在标注编号分别为1,2,...,n的n张牌中抽取3张,试求抽出3张牌编号之和为素数的概率。输入整数n(3<n<=3000),输出对应的概率(四舍五入到小数点后第3位)。
概率计算.在标注编号分别为1,2,-,n的n张牌中抽取3张,试求抽出3张牌编号之和为素数的概率.输入整数n(3<n<=3000),输出对应的概率(四舍五入到小数点后第3位). 思路: 组合 ...
- 输入整数n(0<=n<=1000),紧接着在下一行连续输入n个数。随后输出这一组数的最小值和最大值。
标题 输入整数n(0<=n<=1000),紧接着在下一行连续输入n个数.随后输出这一组数的最小值和最大值. ##解决方法 根据题意输入n个数可以用循环思想,并用if语句进行比较判断,最后进 ...
- OJ1050: 阶乘的累加和(C语言实现多重循环和递推方法)
题目描述 求1! + 2! + --n! 输入 输入一个整数n,你可以假定n不大于10. 输出 输出一个整数,即阶乘累加的结果,单独占一行. 样例输入 Copy 4 样例输出 Copy 33 方法一: ...
- CNDO-INTGRL-SS-BINTGS-斯莱特轨道指数---递推方法
在Approximate Molecular Orbital Theory by Pople John A., Beveridge David L. 的182页出现了BINTGS函数,这个函数只有一个 ...
- tanx的n次方不定积分递推方法
设 令 n = 0,1,求出两个不定积分 递推过程
- 55 - 算法 -动态规划 -数塔问题 感觉都是数组建模 递推方法规则
//模板#include <iostream> #include <cstdio> #include <string> using namespace std;/* ...
最新文章
- 大众点评字体_点评里的神笔马良!她的美食笔记会让你惊掉下巴!
- jQuery.extend与jQuery.fn.extend的区别
- 05: zabbix 监控配置
- 【maven3学习之三】maven构建一个简单的Hello World
- JMeter学习(三十一)Access Log Sampler
- Firefox无法启动,提示Profile is yet in use by another Firefox
- 【剑指offer】面试题33:二叉搜索树的后序遍历序列
- CDH 版本 Kafka 外网设置
- Spring源码分析之lazy-init属性的配置
- “630”落幕 光伏何去何从?
- 致远互联携手华为云启动开发者大赛,加速企业应用定制向平台生态转型
- 为什么我们要阅读源码?
- 数据结构c语言版堆排序,【数据结构】堆排序(C++实现)
- Shanda EZ Mini
- Linux设备驱动程序学习 高级字符驱动程序操作[阻塞型I/O和非阻塞I/O]【转】
- Spring整合MyBatis为什么导致MyBatis一级缓存失效
- 怎么讲计算机屏幕录制,屏幕录制软件怎么用?教你2种屏幕录制方法
- android qq输入法,Android版QQ输入法:滑动输入成最大亮点
- 【毕业设计】基于大数据的抖音短视频数据分析与可视化 - python 大数据 可视化
- 数学建模之倚天剑与屠龙刀