Introduktionskurs i programmering - Python
Postat: 12 okt 2007, 13:42
Jo, det är så här att jag läser den här kursen och om nu går längst ner på sidan finns några labbar.
Jag jobbar för närvarande på Lab 2 (ja, jag ligger efter...) och har fastnat på följande uppgift:
Problemet är att den här funktionen har ganska kraftiga begränsningar i fråga om vilka tal den kan beräkna:
n = 1234 ger: n = 123 +4 > 12 +7 > 1 +9 > 10, vilket ju är 1 +2 +3 +4.
Men när en delsumma överstiger 10 så påverkas ju även nästa siffra i ledet, vilket gör att uträkningen inte fungerar.
Normalt sett brukar jag räkna ut sådant här med loopar, men nu är kravet en rekursiv funktion med endast en variabel.
Jag jobbar för närvarande på Lab 2 (ja, jag ligger efter...) och har fastnat på följande uppgift:
Det här är vad jag lyckats få till hittills:Skriv en funktion som beräknar tvärsumman av ett naturligt tal (funktionen ska ta ett heltal som argument). Med tvärsumman menas summan av alla siffror i talet i talbasen 10 (alltså så som vi vanligtvis skriver talet). Problemet ska lösas med en rekursiv funktion.
Ledning: ett naturligt tal kan delas upp i en sista siffra och det tal man får om man "tar bort" den sista siffran
(här är operatorerna % och / lämpliga att använda). Om det inte blir något kvar när sista siffran tagits bort är
lösningen enkel, i annat fall har man fått ett nytt tal vars tvärsumma är en del av det sökta svaret.
Kod: Markera allt
def xsum(n):
if n>0:
n=n%10+xsum(n/10)%10
return n
n = 1234 ger: n = 123 +4 > 12 +7 > 1 +9 > 10, vilket ju är 1 +2 +3 +4.
Men när en delsumma överstiger 10 så påverkas ju även nästa siffra i ledet, vilket gör att uträkningen inte fungerar.
Normalt sett brukar jag räkna ut sådant här med loopar, men nu är kravet en rekursiv funktion med endast en variabel.