Rekursiv talföljd python
Hej!
Jag ska skapa en lista med datapunkter som fås från en rekursiv talföljd men får fel av "kontroll" programmet, det står "4 Fail, 2 Pass" så den funkar ibland. Här är en bild på min kod samt uppgiftslydelse och nedan min tankegång kring den, tack för er tid.
Jag fattar inte varför koden inte funkar, jag har skapat en tomlista för datapunkterna, tilldelat initialvärdet x=x_n, och sedan börjar jag iterera med forloop som lägger till det nuvarande värdet av x i korrekt position av listan Xn och sedan uppdaterar jag xn och så körs den om. Vad är det jag missar?

Utan att granska din kod ser jag att den endast innehåller en enda funktion, medan uppgiften vill ha två.
sictransit skrev:Utan att granska din kod ser jag att den endast innehåller en enda funktion, medan uppgiften vill ha två.
Ja ursäkta glömde skriva det, vi testar koderna separat för varje funktion, men koderna är i princip likadana förutom funktionsvillkoren då.
Jag förstår inte riktigt hur de här funktionerna ska fungera, men ska det inte vara x = xn - ... snarare än x = x - ...?
Jag är inte heller säker på att funktionerna ska returnera en lista, men det kanske ges av sammanhanget.
Och det står *r längst till höger i funktionsuttrycken, antar jag, eftersom du använder r så.
Det är något som saknas för att jag skall förstå.
Om jag bara läser uppgiften så förväntas jag skapa en funktion som givet ett xn spottar ur sig ett värde baserat på xn och n. Vad argumentet r skall användas till framgår inte. Jag kan heller inte se att det skall returneras en lista.
Sorry. Givet förutsättningarna har jag svårt att hjälpa till.
sictransit skrev:Det är något som saknas för att jag skall förstå.
Om jag bara läser uppgiften så förväntas jag skapa en funktion som givet ett xn spottar ur sig ett värde baserat på xn och n. Vad argumentet r skall användas till framgår inte. Jag kan heller inte se att det skall returneras en lista.
Sorry. Givet förutsättningarna har jag svårt att hjälpa till.
r är en konstant, i mitt fall r=1, testade att returnera sista elementet i listan vilket gav fel på alla 6 test körningar men med lista får jag 2 av 6 rätt i test körningarna - borde vara lista map det.
For-loop är som du ju säger iteration, inte rekursion. Även om du får rätt svar så kanske din lösning inte godkänns. Nu ser jag inte hur de där formlerna är tänkta att leda till rekursion, men av din beskrivning och det faktum att funktionerna ska ta emot föregående koordinat så känns det som att rekursion är vad som efterfrågas.
Rekursiva funktioner ser i regel ut som så att antingen utför de någon operation som innebär att de anropar sig själva med nya parametrar, eller har de nått sitt "base case" och då slutar vi lägga funktionsanrop på stacken. Se följande rekursiva funktion för fakultetsberäkning:
def factorial(n):
if n == 1:
return n # Base case
else:
return n * factorial(n - 1) # Rekursion
Sen eftersom ingen av parametrarna är en lista så tror jag inte svaret ska vara en lista heller, för du har inget sätt att skicka listan vidare i dina rekursiva anrop.