Calculating the Sum of a List of Numbers

အခု ထပ္ၿပီးေတာ့ ေလ့လာၾကည့္ရေအာင္။ ကၽြန္ေတာ္တို႔မွာ function တစ္ခုရွိမယ္။ [1,2,5,9,7] ဆိုသည့္ array ထဲက number ေတြ အကုန္ ေပါင္းသည့္ function ေလးပါ။

code ေလးကို ၾကည့္ရေအာင္

def listsum(numList): sum = 0 for i in numList: sum = sum + i return sum print(listsum([1,2,5,9,7]))

sum = 0
for i in numList:
    sum = sum + i

loop ကေတာ့ numList ထဲမွာ ပါသည့္ number ေတြ အကုန္ loop ပတ္မယ္။

အဆင့္ေတြ အေနနဲ႔

  • sum = 0 + 1
  • sum = 1 + 2
  • sum = 3 + 5
  • sum = 8 + 9
  • sum = 17 + 7

ရွင္းရွင္းေလးပါ။ ေနာက္ဆံုး sum = 24 ထြက္လာပါတယ္။

ဒီ code ေလးကို ထပ္ၿပီးေတာ့ နားလည္ ေအာင္ ၾကည့္ရေအာင္။

ပထမဆံုး နံပတ္ နဲ႔ ေနာက္က နံပတ္ စဥ္ေတြ ကို ေပါင္းသြားတာနဲ႔ မတူဘူးလား။ အဲဒီ sum ကို ကၽြန္ေတာ္တို႔ေတြ ျဖန္႔ၿပီး ေရးၾကည့္ရင္

sum = (1 + (2 + (5 + (9 + 7)))

အဲလို အတန္းႀကီး ရပါတယ္။ အဲဒီ သေဘာတရားဟာ ေအာက္ကလို ပံုစံ နဲ႔ တူတယ္

listsum(numList) = first(numList) + listsum(rest(numList))

ေရွ႕ဆံုး အခန္းကို ယူတယ္။ ၿပီးရင္ က်န္တဲ့ အခန္းနဲ႔ ေပါင္းတယ္။ ေနာက္တစ္ေခါက္ ေရွ႕ဆံုး အခန္းကို ယူတယ္။ က်န္တဲ့ အခန္းနဲ႔ ေပါင္းတယ္။ ဘယ္အခ်ိန္ထိလဲ ဆိုေတာ့ list ထဲမွာ ၁ ခုပဲ က်န္သည့္ အထိပဲ။ တစ္ခု ပဲ က်န္ရင္ေတာ့ ထပ္ၿပီး မေပါင္းေတာ့ဘူး။ ဒီ အတိုင္းပဲ ရွိေနတယ္။

ဒါေလးကို သေဘာေပါက္ရင္ ကၽြန္ေတာ္တို႔ေတြ ေရးလို႔ ရပါၿပီ။ မေရးခင္ မွာ ကၽြန္ေတာ္တို႔ သိထားသင့္တာက python မွာ ေရွ႕အခန္းမပါပဲ က်န္တဲ့ အခန္းေတြ အကုန္ list ထဲကေန ဘယ္လို ယူရမလဲ ဆိုတာပါ။

k = [1,2,5,9,7] print(k[1:]) print(k[2:4]) print(k[:3])

k[1:]

list ထဲမွာ ေရွ႕ဆံုး တစ္ခန္းက လြဲၿပီး က်န္တဲ့ အခန္း အကုန္ပါ ဆိုသည့္ အဓိပၸာယ္ပါ။

k[2:]

ဆိုရင္ေတာ့ ေရွ႕ဆံုး ၂ ခန္း ေပါ့။

k[2:4]

ဒီ code ရဲ႕ အဓိပၸာယ္ကေတာ့ ေရွ႕ ၂ ခန္း မယူဘူး။ ေနာက္ၿပီး ၄ လံုး ေျမာက္ အထိပဲ ယူမယ္။ ဒါေၾကာင့္ [5, 9] ဆိုၿပီး ထြက္လာပါတယ္။ ေရွ႕ဆံုး ၂ ခန္း မပါဘူးဆိုေတာ့ တတိယ အခန္း 5 က ေန စတယ္။ ၄ ခု ေျမာက္ထိပဲ ဆိုေတာ့ 9 မွာ ဆံုးတယ္။ ဒါေၾကာင့္ [5,9] ျဖစ္သြားတာပါ။

k[:3]

ကေတာ့ ေရွ႕က အကုန္ယူမယ္။ ဒါေပမယ့္ ၃ လံုး ေျမာက္ေနရာ အထိပဲ ယူမယ္။ဒါေၾကာင့္ [1, 2, 5] ဆိုၿပီးေတာ့ ထြက္လာပါတယ္။

ဒီသေဘာတရားကို သိၿပီဆိုရင္ ကၽြန္ေတာ္တို႔ recursive ေရးထားသည့္ function ကို ၾကည့္ရေအာင္။

def listsum(numList): if len(numList) == 1: return numList[0] else: return numList[0] + listsum(numList[1:]) print(listsum([1,2,5,9,7]))

အဲဒီ code ေလးကို ရွင္းဖို႔ ေအာက္ကပံု ကိုၾကည့္ၾကည့္ပါ။

rec

ကၽြန္ေတာ္တို႔ list ေလး ေပးလိုက္တယ္။ ဒီ function ကို ပဲ အဆင့္ဆင့္ေလး ေခၚသြားလိုက္ေတာ့ ပံုထဲက အတိုင္းေလး ျဖစ္သြားတယ္။ ေနာက္ေတာ့ return ျပန္လာတယ္။

rec_return

ဒီပံုကို ေအာက္ကေန အေပၚ return ျပန္လာသည့္ ပံုပါ။ ေအာက္ဆံုးကေန အေပၚဆံုးကို တဆင့္ျခင္းဆီ အဆင့္ဆင့္ return ျပန္ရင္းနဲ႔ အေျဖထြက္လာတာကို ေတြ႕ႏိုင္ပါတယ္။

ကၽြန္ေတာ္တို႔ေတြ ဆက္ၿပီးေတာ့ အျခား ဥပမာ ကို ေလ့လာၾကည့္ရေအာင္။

results matching ""

    No results matching ""