C'è poco da ricordare agli altri e molto da studiare... Cosa succede se cerchi di accedere al trentesimo elemento di un array di 20 items?se tu intendi che non c'è un freno al puntatore iter, ti ricordo che l'array "radici" del main che passo alla funzione cambiandogli nome e chiamandola "riso" è di 20 massimo cellette di memoria. siccome un'equazione con un'incognita che arrivi ad elevarsi fino alla ventesima non l'ho mai vista anche se è possibile, è poco probabile, quindi non c'è rischio che il pc trovi più di venti risultati
Prova ad aggiungere un cout << iter << endl; prima della riga ris[iter]=i; per vedere dopo quante iterazioni si verifica il buffer overflow.