递归和迭代介绍及常见示例(C++、Python实现)

news/2024/11/18 3:18:18/

递归和迭代介绍及常见示例(C++、Python实现)

递归的核心思想确实可以被概括为“分而治之”。递归通常在问题具有明显的自相似性,并且可以被有效地分解为较小的子问题时最为有效。如果一个问题不能被有效地分解,或者子问题之间有大量的重叠,那么使用递归可能不是最好的解决方案。

递归函数通常需要一个“终止条件”来指示何时停止递归。当函数调用本身时,每次参数都应该是可处理的更小数据集,以便可以逐步接近“终止条件”。

任何递归问题理论上都可以用迭代来实现,反之亦然。这是因为递归和迭代都是用来解决需要重复操作的问题的编程技术,只是它们的实现方式和效率可能会有所不同。

迭代是一种编程技术,其中一组指令被重复执行,直到满足某个条件。迭代通常通过循环结构(如 for 循环或 while 循环)实现。

以下是一些使用递归函数的例子。

1、计算了1到n的整数之和。

★递归算法用C++实现:

#include <iostream>
using namespace std; int recursiveSum(int n) {if (n == 0) { // 终止条件return 0;} else {return n + recursiveSum(n - 1); // 递归调用}
}int main() {int n;cout << "请输入一个正整数: ";cin >> n;int sum = recursiveSum(n); // 调用递归函数计算和cout << "从1到" << n << "的所有整数的和为: " << sum << endl;return 0;
}

★递归算法用Python实现代码:

def recursiveSum(n):if n == 0:return 0else:return n + recursiveSum(n - 1); # 递归调用n = int(input("请输入一个正整数: "))
sum = recursiveSum(n)  # 调用递归函数计算和print(f"从1到{n}的所有整数的和为: {sum}")  

★迭代算法用c++实现:

#include <iostream>
using namespace std; int iterativeSum(int n) {int sum = 0;for(int i = 1; i <= n; i++) {sum += i;}return sum;
}int main() {int n;cout << "请输入一个正整数: ";cin >> n;int sum = iterativeSum(n); // 调用递归函数计算和cout << "从1到" << n << "的所有整数的和为: " << sum << endl;return 0;
}

★迭代算法用Python实现:

def iterativeSum(n):result = 0while n > 0:result += nn -= 1return resultn = int(input("请输入一个正整数: "))
sum = iterativeSum (n)  # 调用递归函数计算和print(f"从1到{n}的所有整数的和为: {sum}")  

2.计算阶乘

阶乘(Factorial):

阶乘是指将一个正整数 n 及小于等于 n 的所有正整数相乘的结果。符号通常用符号 "!" 表示。例如,5 的阶乘表示为 5!,计算公式为:5! = 5 × 4 × 3 × 2 × 1 = 120。可以使用递归或迭代的方式来计算阶乘。

★递归算法用C++实现(关键代码):

int factorial(int n) {if (n == 0) {return 1;} else {return n * factorial(n - 1);}
}

在这个例子中,factorial(n)函数通过递归调用自身来计算n的阶乘。基本情况是n == 0,此时函数返回1。在递归情况下,函数返回n * factorial(n - 1),这是n的阶乘的定义。

★递归用Python实现(关键代码):

def factorial(n):if n == 0:return 1else:return n * factorial(n - 1)

★迭代算法用C++实现(关键代码):

int factorial(int n) {int result = 1;for (int i = 1; i <= n; i++) {result *= i;}return result;
}

★迭代算法用Python实现(关键代码):

def factorial_iterative(n):result = 1for i in range(1, n+1):result *= ireturn result

3.计算斐波那契数列

斐波那契数列(Fibonacci Sequence):

斐波那契数列是指从 0 和 1 开始,后面的每一项都是前两项之和。也就是说,第 n 个斐波那契数等于第 n-1 个斐波那契数与第 n-2 个斐波那契数的和。斐波那契数列的前几项依次为:0, 1, 1, 2, 3, 5, 8, 13, 21, ...。可以使用递归或迭代的方式来生成斐波那契数列。

★递归算法用C++实现(关键代码):

int fibonacci(int n) {if (n <= 1) {return n;} else {return fibonacci(n - 1) + fibonacci(n - 2);}
}

在这个例子中,fibonacci(n)函数通过递归调用自身来计算斐波那契数列的第n项。基本情况是n <= 1,此时函数返回n。在递归情况下,函数返回fibonacci(n - 1) + fibonacci(n - 2),这是斐波那契数列的定义。

★递归算法用Python实现(关键代码)

def fibonacci(n):if n <= 1:return nelse:return fibonacci(n - 1) + fibonacci(n - 2)

★迭代算法用C++实现(关键代码):

int fibonacci(int n) {if (n <= 0) {return n;} else {int a = 0, b = 1, c;for (int i = 2; i <= n; i++) {c = a + b;a = b;b = c;}return b;}
}

★迭代算法用Python实现(关键代码):

def fibonacci(n):if n <= 0:return nelse:a, b = 0, 1for _ in range(2, n + 1):a, b = b, a + breturn b


http://www.ppmy.cn/news/1049937.html

相关文章

前端数据安全:保护你的应用不被黑客入侵

在当今数字化时代&#xff0c;前端开发者的一个主要职责是确保应用程序中的数据安全。黑客们总是在寻找机会来窃取敏感信息&#xff0c;所以作为前端开发者&#xff0c;我们需要采取一些措施来保护用户数据。本文将介绍一些前端数据安全的基本原则和技术。 1. 使用 HTTPS HTT…

TheGem主题 - 创意多用途和高性能WooCommerce WordPress主题/网站

TheGem主题概述 – 适合所有人的TheGem 作为设计元素、样式和功能的终极 Web 构建工具箱而设计和开发&#xff0c;TheGem主题将帮助您在几分钟内构建一个令人印象深刻的高性能网站&#xff0c;而无需触及一行代码。不要在编码上浪费时间&#xff0c;探索你的创造力&#xff01…

Django模板语法,带你快速入门

目录 案例一&#xff1a;登录页面 案例二&#xff1a;for案例 if案例——单个字符串的传递&#xff0c;列表的传递&#xff0c;字典的传递 模板语法其本质&#xff1a;本质上&#xff0c;Django的模板语法就是在html中&#xff0c;写一些占位符&#xff0c;由数据对这些占位符…

web框架面试题

1、Django 的生命周期&#xff1f; 前端发起请求nginxuwsgi中间件URLview视图通过orm与model层进行数据交互拿到数据返回给view试图将数据渲染到模板中拿到字符串中间件uwsginginx前端渲染 2、中间件的五种方法&#xff1f; process_requestprocess_responseProcess_viewPro…

vector(介绍)

目录 1.vector的介绍及使用 1.1 vector的介绍 1.2 vector的使用 1.2.1 vector的定义 1.2.2 vector iterator 的使用 1.2.3 vector 空间增长问题 1.2.4 vector 增删查改 1.2.5 vector 迭代器失效问题。&#xff08;重点&#xff09; 2.vector深度剖析及模拟实现 2.1 使用…

【SpringCloud】SpringCloudAlibaba官网资料

出现原因 Spring Cloud Netflix Projects Entering Maintenance Mode 官网 博客 https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md官网 https://spring.io/projects/spring-cloud-alibaba#overview英文 https://github.com/alibaba/spring-cloud-…

第12步---MySQL的JDBC操作

第12步---MySQL的JDBC操作 1.概述 采用Java API 的方式实现数据之间的操作。 根据不同的数据库采用了不同的驱动&#xff0c;接口是一致的。 下载的地址 MySQL :: Download MySQL Connector/J (Archived Versions) 2.执行流程 注册驱动 创建连接 执行sql语句的对象 结果…

中国省域-经济高质量发展水平2000-2021年(数据+dofile+综合指数)

以中国31个省级行政单位&#xff08;不含港澳台&#xff09;为研究对象&#xff0c;测度中国省域经济高质量发展 中国省域经济高质量发展测度结果&#xff0c; 有助于分析各地区经济高质量发展的优势和短板&#xff0c; 为改善地区经济高质量发展提供参考价值 一、数据介绍 数…