
使用递归/迭代思想完成n层嵌套平方根的计算
发布日期:2021-05-08 01:17:05
浏览次数:20
分类:精选文章
本文共 2036 字,大约阅读时间需要 6 分钟。
[程序代码(普通递归思想)]
#include#include /* 函数原型 */double f(double x, unsigned int n);/* */int main(){ double x; int n; printf("Please input x and n:"); scanf("%lf,%d", &x, &n); if(x >=0 && n >= 0) { printf( "Result=%.2lf\n", f(x, n)); } else { /* 数据非法 */ printf("data error!\n"); }}/* 计算 n层嵌套平方根 */double f(double x, unsigned int n){ if(n == 0) { /* 题目规定, 0层嵌套平方根的值为0 */ return 0; } else if(n == 1) { /* 递归的终止条件 */ return sqrt(x); } else { /* 递归的一般条件 */ return sqrt(x + f(x, n - 1)); }}
[运行结果]
另外也可以使用迭代思想解决该问题.
[程序代码(迭代思想)]
#include#include /* 函数原型 */double f(double x, unsigned int n);/* */int main(){ double x; int n; printf("Please input x and n:"); scanf("%lf,%d", &x, &n); if(x >=0 && n >= 0) { printf( "Result=%.2lf\n", f(x, n)); } else { /* 数据非法 */ printf("data error!\n"); }}/* 计算 n层嵌套平方根 */double f(double x, unsigned int n){ if(n == 0) { /* 题目规定0层嵌套平方根的值为0 */ return 0; } /* */ double s = x; unsigned int j = 2; while(j <= n) { /* s变量负责实现迭代 */ s = x + sqrt(s); j ++; } /* 循环结束后, 最后要取其平方根做为返回值 */ s = sqrt(s); return s;}
[运行结果]
最后还可以通过尾递归思路解决该问题.
[程序代码(尾递归思想)]
#include#include /* 函数原型 */double f(double x, unsigned int n, double s);/* */int main(){ double x; int n; printf("Please input x and n:"); scanf("%lf,%d", &x, &n); if(x >=0 && n >= 0) { printf( "Result=%.2lf\n", f(x, n, x)); } else { /* 数据非法 */ printf("data error!\n"); }}/* 计算 n层嵌套平方根 */double f(double x, unsigned int n, double s){ if(n == 0) { /* 题目规定0层嵌套平方根的值为0 */ return 0; } else if(n == 1) { /* 递归的终止条件 */ return sqrt(s); } else { /* 递归的一般条件 */ /* 很容易通过迭代思路转化为尾递归思路 */ s = x + sqrt(s); return f(x, n - 1, s); }}
[运行结果]
发表评论
最新留言
不错!
[***.144.177.141]2025年03月21日 22时21分46秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Head First设计模式——迭代器模式
2021-05-09
MongoDB版本及存储引擎区别
2021-05-09
shell echo单行和多行文字定向写入到文件中
2021-05-09
cmp命令
2021-05-09
Linux 磁盘管理(df fu fdisk mkfs mount)
2021-05-09
jQuery的事件绑定与触发 - 学习笔记
2021-05-09
Linux上TCP的几个内核参数调优
2021-05-09
记一次讲故事机器人的开发-我有故事,让机器人来读
2021-05-09
seo 回忆录百度基本概念(一)
2021-05-09
netcore中使用session
2021-05-09
Android 开发学习进程0.25 自定义控件
2021-05-09
多媒体文件格式全解说(下)--图片
2021-05-09
淘宝WAP版小BUG分析
2021-05-09
asp.net打印网页后自动关闭网页【无需插件】
2021-05-09
【Maven】POM基本概念
2021-05-09
【Java思考】Java 中的实参与形参之间的传递到底是值传递还是引用传递呢?
2021-05-09
【设计模式】单例模式
2021-05-09
远程触发Jenkins的Pipeline任务的并发问题处理
2021-05-09
entity framework core在独立类库下执行迁移操作
2021-05-09