递归算法
最编程
2024-07-21 11:46:02
...
问题描述
编写如下定义的递归函数的递归算法
g(m,n)=0 当m=0,n>=0时,g(m,n)=g(m-1,2n)+n当m>0,n>=0时
代码
View Code
1 View Code 2 #include<stdio.h> 3 int fun(int m, int n) 4 { 5 6 if(m==0&&n>=0) 7 return 0; 8 else 9 return fun(m-1,2*n)+n;//我的了个去,把2*n写成2n,我太不细心了,好好做。 10 } 11 12 int main() 13 { 14 int m,n,s; 15 printf("请输入两个参数:"); 16 scanf("%d,%d",&m,&n); 17 s=fun(m,n); 18 printf("%d\n",s); 19 return 0; 20 }
问题描述:
写出求递归函数F(n)的递归算法,并消除递归:
F(n)=n+1 当n=0;F(n)=n*F(n/2);当n>0
代码
递归的代码:
View Code
#include<stdio.h> int fun(int n) { if(n>0) return n*fun(n/2); else return n+1; } int main() { int n; printf("请输入n的值:\n"); scanf("%d",&n); printf("%d\n",fun(n)); return 0; }
非递归的代码:
View Code
1 int main() 2 { 3 int n,s=1; 4 printf("请输入n的值:\n"); 5 scanf("%d",&n); 6 while(n>0) 7 { 8 s=s*n; 9 n=n/2; 10 } 11 printf("%d\n",s); 12 return 0; 13 }
总结
递归算法,弄清楚其中的逻辑关系。
上一篇: JS 设计模式 (I) 单例模式
推荐阅读
-
数学建模算法与应用》 第 5 章 插值和拟合方法
-
华为 OD 机测试 - RSA 加密算法(Python/JS/C/C++ 2024 E 卷 100 分) - V.Python 算法源代码
-
第 4 章 动态编程算法_未完成
-
使用 opencv 学习:使用 BPHFaceRecognizer_create 算法提取人脸识别器特征
-
机器学习]聚类算法|KMeans 实现过程|SSE 误差均衡法和 SC 轮廓系数法|客户数据聚类分析示例
-
递归神经网络 LSTM 网络
-
从算法到灵感:AIGC 科技引领创意新时代
-
[Matlab 算法] 基于 MATLAB 的图像复原算法的研究与实现(含完整 MATLAB 代码)
-
代码随想录算法训练营第五十八天| 110.字符串接龙,105.有向图的完全可达性,106.岛屿的周长-105.卡码网有向图的完全可达性
-
基本数据结构 - 利用递归完成气泡排序