Блог пользователя jiraiya_777

Автор jiraiya_777, история, 4 года назад, По-английски

This code snippet is giving: Segmentation fault (core dumped) on my laptop, but running just fine on Custom test on codeforces when I give input like 10^6 or so.

I think the problem is related to space taken by recursive calls, but i don't understand it completely.

Help!!

#include <bits/stdc++.h>
using namespace std;

int n;

int solve(int i){
    if(i==(n-1)){
        return 1;
    }
    int sum1 = solve(i+1);    
    return 1;    
}

int main(){
    int i;
    cin>>n;
    int ans =solve(1);
    cout<<ans;
    return 0;
}
  • Проголосовать: нравится
  • -14
  • Проголосовать: не нравится

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Every platform has its own stack size limit. the limit of Codeforces is much bigger than others.

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    I understand that, but I don't think these 10^6 calls would take that much storage and this has never happened with me before. Can you tell how much space are these calls taking?

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      I am not an expert on this (seems like assembly code problem) but I think every call will take memory for func parameters (in this case an integer) and probably the return address.