递归算法是一种通过函数调用自身来解决问题的方法。它将一个大问题分解为更小的子问题,然后解决这些子问题,直到达到基本情况(可以直接求解的问题)。
#include <iostream>
// 递归函数来计算斐波那契数列
int fibonacci(int n) {
if (n <= 0) {
return 0;
} else if (n == 1) {
return 1;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
int main() {
int number;
std::cout << "Enter the number of terms you want in Fibonacci series: ";
std::cin >> number;
std::cout << "Fibonacci Series: ";
for (int i = 0; i < number; i++) {
std::cout << fibonacci(i) << " ";
}
std::cout << std::endl;
return 0;
}
应用:
文件系统遍历:
在构建文件系统的目录结构时,可以使用递归算法来遍历所有子目录和文件。
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
void traverseDirectory(const fs::path& path) {
if (fs::exists(path) && fs::is_directory(path)) {
for (const auto& entry : fs::directory_iterator(path)) {
auto filename = entry.path().filename();
if (fs::is_directory(entry.status())) {
std::cout << "[Directory] " << filename << std::endl;
// 递归遍历子目录
traverseDirectory(entry.path());
} else if (fs::is_regular_file(entry.status())) {
std::cout << "[File] " << filename << std::endl;
} else {
std::cout << "[Other] " << filename << std::endl;
}
}
} else {
std::cerr << "Path does not exist or is not a directory: " << path << std::endl;
}
}
int main() {
std::string directoryPath;
std::cout << "Enter the directory path you want to traverse: ";
std::cin >> directoryPath;
fs::path path(directoryPath);
traverseDirectory(path);
return 0;
}