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.