由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 为什么这个阶乘函数算到37就溢出了?
相关主题
求助:求整数的位数,咋就不对了呢?求教Analytics的职位怎么样? 附面经
弱弱的问一个问题问一个题
一个容易记忆的permutation算法amazon的那道题目
多重嵌套循环会不会导致栈溢出? (转载)有重复元素的全排列,递归算法
DFS 堆栈溢出,怎么破?Interview questions, Bloomberg
linkedin电面好记(但不是最优)的combination算法
代发amazon面井请问走楼梯的问题如何打印所有的路径。
不用大整数如何计算组合数?one C++ question
相关话题的讨论汇总
话题: factor话题: int话题: acc话题: return话题: 777
进入JobHunting版参与讨论
1 (共1页)
h********g
发帖数: 496
1
如下。本来想算算尾递归和递归的性能区别。结果发现iterative的算法都不行。
每步的结果都%777,就是为了防止结果溢出。
#include
using namespace std;
int factor(int n){
if(n==0) return 1;
int acc=1;
for(int i=n; i>0; i--)
acc=acc*i%777;
return acc;
}
int factor_recursive(int n){
if(n==1 || n==0) return 1;
return factor_recursive(n-1)*n%777;
}
//g++ doesn't optimize for tail-recursion. The following function stops at
Factor(37).
int factor_tailrecursive(int n, int acc){
if(n==1 || n==0) return acc;
return factor_tailrecursive(n-1, (acc*n)%777);
}
int main(){
int n;
cin>>n;
//cout< //cout< cout< return 0;
}
t****t
发帖数: 387
2
(37 * 36 % 777 )* 35 % 777 = 0
为啥会有溢出
h********g
发帖数: 496
3
我搞错了,惭愧。

【在 t****t 的大作中提到】
: (37 * 36 % 777 )* 35 % 777 = 0
: 为啥会有溢出

p*****2
发帖数: 21240
4
有什么结论吗?
h********g
发帖数: 496
5
g++对尾递归没有优化。尾递归和递归同时 segmentation fault
iteration的没有问题。

【在 p*****2 的大作中提到】
: 有什么结论吗?
h********g
发帖数: 496
6
当然以上代码中的注释是错的。实际n达到8位数往上才开始出错,而不是37.

【在 h********g 的大作中提到】
: g++对尾递归没有优化。尾递归和递归同时 segmentation fault
: iteration的没有问题。

p*****2
发帖数: 21240
7

为什么要测C++呢?

【在 h********g 的大作中提到】
: 当然以上代码中的注释是错的。实际n达到8位数往上才开始出错,而不是37.
h********g
发帖数: 496
8
因为我不用fp,呵呵。

【在 p*****2 的大作中提到】
:
: 为什么要测C++呢?

p*****2
发帖数: 21240
9

那为什么对尾递归感兴趣呢?按说C++也应该不会有优化呀。

【在 h********g 的大作中提到】
: 因为我不用fp,呵呵。
h********g
发帖数: 496
10
你满版的鼓吹,我就试验一小下呗

【在 p*****2 的大作中提到】
:
: 那为什么对尾递归感兴趣呢?按说C++也应该不会有优化呀。

1 (共1页)
进入JobHunting版参与讨论
相关主题
one C++ questionDFS 堆栈溢出,怎么破?
C++ object size一问linkedin电面
One C++ question代发amazon面井
one C++ question不用大整数如何计算组合数?
求助:求整数的位数,咋就不对了呢?求教Analytics的职位怎么样? 附面经
弱弱的问一个问题问一个题
一个容易记忆的permutation算法amazon的那道题目
多重嵌套循环会不会导致栈溢出? (转载)有重复元素的全排列,递归算法
相关话题的讨论汇总
话题: factor话题: int话题: acc话题: return话题: 777