《离散数学》用C++实现第二类Stirling数的递归与(非递归)递推的方法 ,并且在实现了s(n-k)=S(n-1,k-1)+k*S(n-1,k)用递归、非递归方式之后,比教两个实验的调试速度、耗时
2016-05-12 20:16
656 查看
用任意语言实现第二类Stirling数的递归与(非递归)递推的方法 ,并且在实现了s(n-k)=S(n-1,k-1)+k*S(n-1,k)用递归、非递归方式之后,比两个方式实验的调试速度、花费的时间得出。
测试时候用多几组数据测试对比得出的结论是:
综合所有的测试结论得出:在相同的输入规模下,递归方式运行速度相对更快,递推运行的时间花费的相对更少。
1第二类Stirling数的递归求法c++程序源码 #include "stdafx.h" #include <iostream> #include <cmath> using namespace std; int stirling(int, int); int main() { cout << "请输入两个整数n和k:"; int n, k; cin >> n >> k; cout << "这组数将会有" << stirling(n, k) << " 种划分方式" << endl; return 0; } int stirling(int i, int j) { if ((j == i) || (j == 1)) { return 1; } else if (j == 2) { return pow(2, (i - 1) * 1.0) - 1; } else { return stirling(i - 1, j - 1) + j * stirling(i - 1, j); } } 第二类Stirling数的递推求法C++程序源码 // recursion1.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <cmath> using namespace std; int main() { cout << "请输入两个整数n和k: "; int n, k; cin >> n >> k; int array[100][100]; int i, j; for (i = 0, j = 0; i < 100; i++, j++) { array[i][j] = 1; } for (j = 0; j < 100; j++) { array[0][j] = 1; } for (i = 1; i < 100; i++) { for (j = i + 1; j < 100; j++) { array[i][j] = (i + 1) * array[i][j - 1] + array[i - 1][j - 1]; } } cout << "这组数将会有 " << array[k - 1][n - 1] << " 种划分方式" << endl; return 0; }
测试时候用多几组数据测试对比得出的结论是:
综合所有的测试结论得出:在相同的输入规模下,递归方式运行速度相对更快,递推运行的时间花费的相对更少。
相关文章推荐
- 多连块(c++ 模拟法)
- C++对象内存模型
- 单循环链表(C语言实现)
- PAT (Basic Level) Practise (中文)1042. 字符统计(20)
- C++中的类与对象
- Win7 64下Visual C++ 6.0不兼容
- C++ auto_ptr智能指针的用法
- 操作系统c实现银行家算法
- c++ 多线程——c++复习(十)
- Understanding C/C++ Strict Aliasing
- vc++6.0的scanf问题
- MOOC北京理工《C语言程序设计(上)》第5周第2题:寻找特殊偶数
- C++ 容器及选用总结
- MOOC北京理工《C语言程序设计(上)》第5周第1题:锻炼身体吧
- C++中int与string的相互转换
- xcode 中 c++ Standard Library的选择 和 如何混编c++
- MOOC北京理工《C语言程序设计(上)》第6周第3题:邮票组合
- C++ Primer 学习笔记_108(大结局!!!)_特殊工具与技术 --固有的不可移植的特征[下]
- C++ Primer 学习笔记_107_特殊工具与技术 --固有的不可移植的特征[上]
- C++ Primer 学习笔记_106_特殊工具与技术 --局部类