vorbei array rekursive Funktion
möchte ich weitergeben array rekursive Funktion , aber ich brauche, um alle arrays
Ausgabe :
1 0 0 0 0
1 2 0 0 0
1 2 3 0 0
1 2 3 0 0
1 2 3 0 0
wenn ich zum vorherigen Schritt zurückzukehren, den ich nutzen möchte-array : 1 2 0 0 0
zweite Rückkehr : 1 0 0 0 0
nicht das hier ein : 1 2 3 0 0
mein Ziel ist, dass die Ausgabe wie diese
1 0 0 0 0
1 2 0 0 0
1 2 3 0 0
1 2 0 0 0
1 0 0 0 0
.
#include<iostream>
using namespace std;
int a[100];
void go (int a[100],int x)
{
a[x]=x;
for(int i=1;i<=5;i++)cout<<a[i]<<" ";cout<<endl;
if(x==3)return;
go(a,x+1);
for(int i=1;i<=5;i++)cout<<a[i]<<" ";cout<<endl;
}
main()
{
go(a,1);
}
er nutzt nur 1-array :/ich brauche es, um einen anderen arrays " a " und wenn es zurück zum vorigen Schritt mit den letzten array-aber die eine, die in Vergessenheit geraten ist, auf diesen Schritt
bitte helfen 🙁
- Gültige Indizes von array-Größe N sind 0 bis N-1. Es kann nicht sein, hier ein problem, weil der array-Größe 100 und Sie sind auf 1 bis 5.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Allgemeinen Fall können Sie C++11 Klasse array (oder vector, oder sogar einige Ihrer Struktur enthalten, array-und überlast-operator [], wenn Sie nicht mit C++11), aber es werden mehr slowely, weil jedes mal, wenn Sie pass-array-es wird kopiert und es wird viel mehr Speicher benötigt, in den stack.
Finde ich besser verwenden std::vector statt std::array, wenn die Rekursion wird genügend tief, weil es requiest weniger Speicher auf dem stack und da in einigen Programmen (nicht in deinem Beispiel) für Vektor verwenden können, verschieben version der Konstruktor/operator=, anstatt Sie zu kopieren.
Version, dass die Verwendung von std::vector:
Es ist, weil Sie mit Zeigern, so schreiben Sie nicht in das temporäre array, sondern in der Erinnerung.
Wenn Sie eine vector-für Sie befriedigend ist, können Sie schreiben:
Ausführbaren version: https://ideone.com/rPgjoG
//Bitte formatieren Sie den code vor dem posten.
für Sie, dass Sie löschen müssen, um die Werte, die Sie habe in den array durch das hinzufügen der Zeile
a[x + 1]=0;
nach der rekursions-Aufruf:außerdem brauchen Sie nicht ein array von 100, oder ein array überhaupt, können Sie nur: