{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "6b4fce18-128e-441d-9040-7d738b1ac1c8",
   "metadata": {},
   "source": [
    "## PDSP 2026, Lecture 12, 17 September 2026"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7ca08ef5-1e38-4c8a-87c3-b77962562059",
   "metadata": {},
   "source": [
    "- Recursive definition of factorial\n",
    "- Add diagnostic `print()` to trace recursive calls"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "4df745e9-4ed5-42ef-99d0-8471516c0f43",
   "metadata": {},
   "outputs": [],
   "source": [
    "def fact(n):\n",
    "    print(\"evaluating factorial of\",n)\n",
    "    if n == 0:\n",
    "        return(1)\n",
    "    else:\n",
    "        return(n*fact(n-1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "096a6b66-5367-4c88-92c7-210fc8e13cdc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "evaluating factorial of 8\n",
      "evaluating factorial of 7\n",
      "evaluating factorial of 6\n",
      "evaluating factorial of 5\n",
      "evaluating factorial of 4\n",
      "evaluating factorial of 3\n",
      "evaluating factorial of 2\n",
      "evaluating factorial of 1\n",
      "evaluating factorial of 0\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "40320"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fact(8)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4a179f2e-56f8-4137-b267-7ed9847a66a9",
   "metadata": {},
   "source": [
    "- A negative argument creates an unending sequence of recursive calls\n",
    "- Python has a built in `recursion limit` to abort such cases\n",
    "    - This limit may deny some legitimate computation -- for instance `factorial(1000)` will also abor"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "50669548-2e63-498a-84da-13a1ab8916cd",
   "metadata": {},
   "source": [
    "- We can fix the negative number case by making the base case check stronger"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "8e9768cb-8c94-42a4-a26d-7351b891fe45",
   "metadata": {},
   "outputs": [],
   "source": [
    "def fact(n):\n",
    "    print(\"evaluating factorial of\",n)\n",
    "    if n <= 0:\n",
    "        return(1)\n",
    "    else:\n",
    "        return(n*fact(n-1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "5734481b-1be8-46da-8cf5-3612d765eeb8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "evaluating factorial of -1\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fact(-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "5315ef85-e3c6-4fe0-86f3-b246465c1576",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "evaluating factorial of 1.5\n",
      "evaluating factorial of 0.5\n",
      "evaluating factorial of -0.5\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.75"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fact(1.5)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6a5f7282-5682-4927-b16c-44e7cfae8aec",
   "metadata": {},
   "source": [
    "- `fact(1.5)` returns $1.5 \\times 0.5 \\times 1$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "da6a268e-4a26-48f0-94bc-2e268241b06d",
   "metadata": {},
   "source": [
    "- Can manually increase the recursion limit\n",
    "- Maximum is $2^{31}-1$, the largest `int` value that can be stored in 32 bits"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "8f492d02-9ac7-469d-b2ee-5153a30f2bca",
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys\n",
    "sys.setrecursionlimit(2**31-1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ef56b84e-f875-4a5d-8134-aff7b9604470",
   "metadata": {},
   "source": [
    "- Comment out the print statement to reduce the length of the output"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "624e5c92",
   "metadata": {},
   "outputs": [],
   "source": [
    "def fact(n):\n",
    "    # print(\"evaluating factorial of\",n)\n",
    "    if n <= 0:\n",
    "        return(1)\n",
    "    else:\n",
    "        return(n*fact(n-1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "eab4800b-4b30-44d7-9481-2f45e2b78614",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404800479988610197196058631666872994808558901323829669944590997424504087073759918823627727188732519779505950995276120874975462497043601418278094646496291056393887437886487337119181045825783647849977012476632889835955735432513185323958463075557409114262417474349347553428646576611667797396668820291207379143853719588249808126867838374559731746136085379534524221586593201928090878297308431392844403281231558611036976801357304216168747609675871348312025478589320767169132448426236131412508780208000261683151027341827977704784635868170164365024153691398281264810213092761244896359928705114964975419909342221566832572080821333186116811553615836546984046708975602900950537616475847728421889679646244945160765353408198901385442487984959953319101723355556602139450399736280750137837615307127761926849034352625200015888535147331611702103968175921510907788019393178114194545257223865541461062892187960223838971476088506276862967146674697562911234082439208160153780889893964518263243671616762179168909779911903754031274622289988005195444414282012187361745992642956581746628302955570299024324153181617210465832036786906117260158783520751516284225540265170483304226143974286933061690897968482590125458327168226458066526769958652682272807075781391858178889652208164348344825993266043367660176999612831860788386150279465955131156552036093988180612138558600301435694527224206344631797460594682573103790084024432438465657245014402821885252470935190620929023136493273497565513958720559654228749774011413346962715422845862377387538230483865688976461927383814900140767310446640259899490222221765904339901886018566526485061799702356193897017860040811889729918311021171229845901641921068884387121855646124960798722908519296819372388642614839657382291123125024186649353143970137428531926649875337218940694281434118520158014123344828015051399694290153483077644569099073152433278288269864602789864321139083506217095002597389863554277196742822248757586765752344220207573630569498825087968928162753848863396909959826280956121450994871701244516461260379029309120889086942028510640182154399457156805941872748998094254742173582401063677404595741785160829230135358081840096996372524230560855903700624271243416909004153690105933983835777939410970027753472000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fact(1000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "08cb6983-cbfc-49c4-b225-031f85e26fe5",
   "metadata": {},
   "source": [
    "- Another well known function that is defined inductively is the Fibonacci sequence\n",
    "    - $fib(0) = 0$\n",
    "    - $fib(1) = 1$\n",
    "    - For $n > 1$, $fib(n) = fib(n-1) + fib(n-2)$\n",
    "- The recursive implementation follows the same structure as the inductive definition\n",
    "- However `fib(n)` takes a very long time even for relatively small values of `n` --- we will explore this later"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "68b45052-cb75-49c4-81f5-adeec1ab556e",
   "metadata": {},
   "outputs": [],
   "source": [
    "def fib(n):\n",
    "    if n == 0:\n",
    "        return 0\n",
    "    if n == 1:\n",
    "        return 1\n",
    "    return fib(n-1) + fib(n-2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "22e5b648-3485-47d1-8bd8-62bcfa407b81",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "21"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fib(8)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "ec6087fe-0ffc-4b2b-a60b-a007f701548b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6765"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fib(20)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "d4fa7fba-88c3-4ab6-9fe8-f4c96f576e8f",
   "metadata": {},
   "outputs": [
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[31m---------------------------------------------------------------------------\u001b[39m",
      "\u001b[31mKeyboardInterrupt\u001b[39m                         Traceback (most recent call last)",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[12]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m fib(\u001b[32m100\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n\u001b[32m      5\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m fib(n-\u001b[32m1\u001b[39m) + fib(n-\u001b[32m2\u001b[39m)\n",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 1\u001b[39m, in \u001b[36mfib\u001b[39m\u001b[34m(n)\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m fib(n):\n\u001b[32m      2\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m0\u001b[39m:\n\u001b[32m      3\u001b[39m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[32m0\u001b[39m\n\u001b[32m      4\u001b[39m     \u001b[38;5;28;01mif\u001b[39;00m n == \u001b[32m1\u001b[39m:\n",
      "\u001b[31mKeyboardInterrupt\u001b[39m: "
     ]
    }
   ],
   "source": [
    "fib(100)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "48b52ec9-f9f8-4729-b03e-bf6b3ea7f2bb",
   "metadata": {},
   "source": [
    "- Our dictionary based implementation of lists from last time"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "b8547085",
   "metadata": {
    "id": "_O05Oyg4-Sny"
   },
   "outputs": [],
   "source": [
    "def createlist():  # Equivalent of l = [] is l = createlist()\n",
    "  return({})\n",
    "\n",
    "def appendlist(l,x):\n",
    "  if l == {}:\n",
    "    l[\"value\"] = x\n",
    "    l[\"next\"] = {}\n",
    "    return\n",
    "  \n",
    "  node = l\n",
    "  while node[\"next\"] != {}:\n",
    "    node = node[\"next\"]\n",
    "    \n",
    "  node[\"next\"][\"value\"] = x\n",
    "  node[\"next\"][\"next\"] = {}\n",
    "  return\n",
    "\n",
    "def insertlist(l,x):  # l.insert(0,x)\n",
    "  if l == {}:\n",
    "    l[\"value\"] = x\n",
    "    l[\"next\"] = {}\n",
    "    return\n",
    "\n",
    "  newnode = {}\n",
    "  newnode[\"value\"] = l[\"value\"]\n",
    "  newnode[\"next\"] = l[\"next\"]\n",
    "  l[\"value\"] = x\n",
    "  l[\"next\"] = newnode\n",
    "  return\n",
    "\n",
    "\n",
    "def printlist(l):\n",
    "  print(\"{\",end=\"\")\n",
    "\n",
    "  if l == {}:\n",
    "    print(\"}\")\n",
    "    return\n",
    "  node = l\n",
    "\n",
    "  print(node[\"value\"],end=\"\")\n",
    "  while node[\"next\"] != {}:\n",
    "    node = node[\"next\"]\n",
    "    print(\",\",node[\"value\"],end=\"\")\n",
    "  print(\"}\")\n",
    "  return\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "999a2b36-aab0-4f4b-8af2-8cec7b402dad",
   "metadata": {},
   "source": [
    "- A recursive defintion of append"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "19317998-304b-44b6-bc1b-b60bd84877e6",
   "metadata": {},
   "outputs": [],
   "source": [
    "def emptylist(l):\n",
    "    return l == {}\n",
    "\n",
    "def appendlistr(l,v):  # Recursive definition of append\n",
    "    if emptylist(l):\n",
    "        l[\"value\"] = v\n",
    "        l[\"next\"] = {}\n",
    "    else:\n",
    "        appendlistr(l[\"next\"],v)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "f0cdd9b7-9120-4445-9d11-1660f9e17082",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}\n"
     ]
    }
   ],
   "source": [
    "newl = createlist()\n",
    "for i in range(10):\n",
    "    appendlistr(newl,i)\n",
    "printlist(newl)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "531b4335-8b2d-4f6a-95ee-ef748a8a7057",
   "metadata": {},
   "source": [
    "- Other recursive functions on lists: length and sum"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "2c4e0c1a-0c34-4187-a8a1-067ab485e9c5",
   "metadata": {},
   "outputs": [],
   "source": [
    "def lengthlist(l):\n",
    "    if emptylist(l):\n",
    "        return 0\n",
    "    else:\n",
    "        return 1 + lengthlist(l[\"next\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "c4720f65-d8ee-4a0c-9f15-2ad73b832dcc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lengthlist(newl)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "40a67f3f-406a-462a-a911-b2f85e620eb8",
   "metadata": {},
   "outputs": [],
   "source": [
    "def sumlist(l):\n",
    "    if emptylist(l):\n",
    "        return 0\n",
    "    else:\n",
    "        return l[\"value\"] + sumlist(l[\"next\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "20641e8c-ae04-44aa-b37d-031f27822224",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "45"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sumlist(newl)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "da4f4fef-7656-4e08-bdc2-b411dc3b4a81",
   "metadata": {},
   "source": [
    "- `deletelist(l,v)` deletes the first occurrence of `v` in `l`. If `v` is not present in `l`, the list is left undisturbed\n",
    "- Here is a recursive implementation of `deletelist`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "21bb594c-5f44-4fc3-8bfe-5265dc99fe83",
   "metadata": {},
   "outputs": [],
   "source": [
    "def deletelist(l,v):\n",
    "    if emptylist(l):\n",
    "        return \n",
    "    if emptylist(l[\"next\"]):\n",
    "        if l[\"value\"] == v:\n",
    "            del(l[\"value\"])\n",
    "            del(l[\"next\"])\n",
    "        return\n",
    "    if l[\"value\"] == v:\n",
    "        l[\"value\"] = l[\"next\"][\"value\"]\n",
    "        l[\"next\"] = l[\"next\"][\"next\"]\n",
    "    else:\n",
    "        deletelist(l[\"next\"],v)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "be80f4d8-501b-41cd-a9c3-68994a1b2652",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}\n"
     ]
    }
   ],
   "source": [
    "printlist(newl)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9f990e6f-cd51-42ee-9fd2-7797b8f383e4",
   "metadata": {},
   "source": [
    "- Check that this works with some representative operatio"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0ae77ee9-961c-463b-8acf-2f031d319833",
   "metadata": {},
   "source": [
    "- Delete from middle"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "5d917086-5d60-44b9-9160-876ad471a417",
   "metadata": {},
   "outputs": [],
   "source": [
    "deletelist(newl,5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "c3d9ff5a-4eeb-463f-ba2f-bceed6d672d5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{0, 1, 2, 3, 4, 6, 7, 8, 9}\n"
     ]
    }
   ],
   "source": [
    "printlist(newl)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "088a8420-1e96-4daa-ac8e-4f85bf92bc1d",
   "metadata": {},
   "source": [
    "- Delete first element"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "aa45b094-ca2a-4995-8c44-cf6d28e9add2",
   "metadata": {},
   "outputs": [],
   "source": [
    "deletelist(newl,0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "a4a857a1-16bd-4142-9f3c-c3e7dbb3921a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{1, 2, 3, 4, 6, 7, 8, 9}\n"
     ]
    }
   ],
   "source": [
    "printlist(newl)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fc59a601-a336-4b73-8ab6-b77a0c42947a",
   "metadata": {},
   "source": [
    "- Delete last element"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "0ead6c53-cf04-4c1e-a124-a8eaaf9ec541",
   "metadata": {},
   "outputs": [],
   "source": [
    "deletelist(newl,9)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "fae23442-2d3b-4ec1-a5f2-2069187e6f5e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{1, 2, 3, 4, 6, 7, 8}\n"
     ]
    }
   ],
   "source": [
    "printlist(newl)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
