求 1!+2!+3!....+n! 的 C++递归与非递归实现
2016-09-14 21:52
302 查看
本来很简单的一道题,笔试的时候就是脑袋僵掉了,居然传参的时候搞错了。
下面是正确的代码
#include "stdafx.h"
#include<iostream>
using namespace std;
//递归函数
long long func(long long data, long long &sum)
{
if (data == 1)
return 1;
long long temp = data*func(data - 1, sum);
sum += temp;
return temp;
}
//非递归函数
void func1(long long data, long long &sum)
{
for (long long i = 1; i <= data; ++i)
sum *= i;
long long temp = sum / data;
while (--data)
{
sum += temp;
temp /= data;
}
}
int main()
{
long long data;
while (cin >> data)
{
if (data < 1)
continue;
long long result = 1;
//func(data, result); //递归实现
func1(data, result);//非递归实现
cout << result<<'\n';
}
return 0;
}
下面是正确的代码
#include "stdafx.h"
#include<iostream>
using namespace std;
//递归函数
long long func(long long data, long long &sum)
{
if (data == 1)
return 1;
long long temp = data*func(data - 1, sum);
sum += temp;
return temp;
}
//非递归函数
void func1(long long data, long long &sum)
{
for (long long i = 1; i <= data; ++i)
sum *= i;
long long temp = sum / data;
while (--data)
{
sum += temp;
temp /= data;
}
}
int main()
{
long long data;
while (cin >> data)
{
if (data < 1)
continue;
long long result = 1;
//func(data, result); //递归实现
func1(data, result);//非递归实现
cout << result<<'\n';
}
return 0;
}
相关文章推荐
- C++ 二分查找的递归与非递归实现
- 算法导论2.3-5答案 分别采用递归与非递归方式实现二分查找 c++实现
- 【C++】二叉树遍历--递归与非递归实现
- 数据结构-二叉树:C++模板类递归实现与非递归实现
- C++实现二叉树的递归与非递归遍历
- C++实现二叉树的递归遍历与非递归遍历
- 初学者看过来:简单谈谈 C/C++ 递归的思想,实现,以及和循环的关系。
- 详细讲解二叉树三种遍历方式的递归与非递归实现
- c++实现二分查找 递归和非递归
- c/c++实现二叉树前序,中序和后序的递归和非递归遍历
- 二分查找的递归与非递归实现
- 快速排序递归与非递归代码实现与思考
- [原][二叉树专题]:先序遍历二叉树的递归实现与非递归实现
- 全排列的递归与非递归实现
- 裴波那契数列的递归实现与非递归实现
- 归并排序的递归与非递归实现java
- C语言实现二叉树的常用的算法(递归与非递归实现遍历)
- 全排列的递归与非递归实现
- 用递归实现求和,求最大最小值,C++
- 折半查找的c++模板递归和迭代实现