[🤔Code Kata] 3week-4,5


-DAY4-


<質問>
指定した数値配列で、0を配列の最後に移動します.
元の数字の順番を変えないでください.
新しいアレイは作成しないでください.
Input: [0,1,0,3,12] -> Output: [1,3,12,0,0]

方法


思ったより簡単かな?いいえ.
まず0までの個数を数え、リストから要素を削除する方法で0を除去し、最後にappendで最後の点数から0までの個数に0を加算します.
def move_zeroes(nums):
  # 여기에 코드를 작성해주세요
  test = nums.count(0)
  while test != 0:
    nums.remove(0)
    nums.append(0)
    test -= 1
  return nums

Model Solutions

def moveZeroes(nums):
  last0 = 0
  
  for i in range(0, len(nums)):
    if nums[i] != 0:
      nums[i], nums[last0] = nums[last0], nums[i]
      last0 += 1
      
  return nums
まず0を指定し、数字を変える方法で行います.
斬新な方法!私の最も理解しにくい概念はnums[i], nums[last0] = nums[last0], nums[i]で、本当に毎回見れば見るほど不思議ですハハ...

-DAY5-


<質問>
再帰実装求実関数を使用してください.
工場は1からnまでの整数の積です.

1! = 1
2! = 1 2
5! = 1 2 3 4 * 5

方法


これは再帰関数についての内容です.
質問自体は簡単ですが、新しいコンセプトなので、Google(Google)で一度にコンセプトを整理して質問に答えました.
def factorial(n):
  if n == 0:
    return 1
  return n * factorial(n-1)

さいきかんすう


関数の中で関数本人を実行して繰り返す方法で何を言いたいのか、よく見るとそうです.
def recursion_print():
      print("함수 실행")
      recursion_print()

recursion_print()
結果の値は次のとおりです.
함수 실행
함수 실행
...
함수 실행
RecursionError: maximum recursion depth exceeded while calling a Python object
再帰関数は無限であるが,繰返し可能な回数は限られている(人間から見れば無限である…)また,再帰関数は条件文で制御できる.

Model Solution

def factorial(n):
  if (n == 0):
    return 1
    
  return n * factorial(n-1)
私に近づく方法と同じように