|
267 | 267 | },
|
268 | 268 | {
|
269 | 269 | "cell_type": "code",
|
270 |
| - "execution_count": null, |
| 270 | + "execution_count": 8, |
271 | 271 | "metadata": {},
|
272 | 272 | "outputs": [],
|
273 | 273 | "source": [
|
274 | 274 | "# Finding Fibonacci number in series\n",
|
275 |
| - "# count = 0\n", |
| 275 | + "count = 0\n", |
276 | 276 | "def fib(n):\n",
|
277 |
| - " #global count\n", |
278 |
| - " #count += 1\n", |
| 277 | + " global count\n", |
| 278 | + " count += 1\n", |
279 | 279 | " if n <= 1:\n",
|
280 | 280 | " return n\n",
|
281 | 281 | " f = fib(n-1) + fib(n-2)\n",
|
|
284 | 284 | },
|
285 | 285 | {
|
286 | 286 | "cell_type": "code",
|
287 |
| - "execution_count": null, |
| 287 | + "execution_count": 9, |
288 | 288 | "metadata": {},
|
289 |
| - "outputs": [], |
| 289 | + "outputs": [ |
| 290 | + { |
| 291 | + "name": "stdout", |
| 292 | + "output_type": "stream", |
| 293 | + "text": [ |
| 294 | + "fib was called 7049155 times.\n" |
| 295 | + ] |
| 296 | + } |
| 297 | + ], |
290 | 298 | "source": [
|
291 | 299 | "fib(32)\n",
|
292 |
| - "#print(count)\n", |
293 |
| - "#assert fib(8) == 21\n", |
294 |
| - "#assert fib(10) == 55" |
| 300 | + "print(f'fib was called {count} times.')\n", |
| 301 | + "assert fib(8) == 21\n", |
| 302 | + "assert fib(10) == 55" |
295 | 303 | ]
|
296 | 304 | },
|
297 | 305 | {
|
|
301 | 309 | "<img src=\"./resources/recursion-fib.svg\" width=\"50%\">\n",
|
302 | 310 | "\n",
|
303 | 311 | "### visualize fib(4) using pythontutor.com\n",
|
304 |
| - "- https://goo.gl/YNizhH" |
| 312 | + "- https://goo.gl/YNizhH\n", |
| 313 | + "\n", |
| 314 | + "### You can timeit\n", |
| 315 | + "\n", |
| 316 | + "- use timeit function to see how long fib(n) takes" |
305 | 317 | ]
|
306 | 318 | },
|
307 | 319 | {
|
308 | 320 | "cell_type": "code",
|
309 |
| - "execution_count": null, |
| 321 | + "execution_count": 10, |
310 | 322 | "metadata": {},
|
311 | 323 | "outputs": [],
|
| 324 | + "source": [ |
| 325 | + "from timeit import timeit" |
| 326 | + ] |
| 327 | + }, |
| 328 | + { |
| 329 | + "cell_type": "code", |
| 330 | + "execution_count": 11, |
| 331 | + "metadata": {}, |
| 332 | + "outputs": [ |
| 333 | + { |
| 334 | + "data": { |
| 335 | + "text/plain": [ |
| 336 | + "1.1521884420071729" |
| 337 | + ] |
| 338 | + }, |
| 339 | + "execution_count": 11, |
| 340 | + "metadata": {}, |
| 341 | + "output_type": "execute_result" |
| 342 | + } |
| 343 | + ], |
312 | 344 | "source": [
|
313 | 345 | "timeit(\"fib(32)\", globals=globals(), number=1)"
|
314 | 346 | ]
|
|
325 | 357 | },
|
326 | 358 | {
|
327 | 359 | "cell_type": "code",
|
328 |
| - "execution_count": null, |
| 360 | + "execution_count": 12, |
329 | 361 | "metadata": {},
|
330 | 362 | "outputs": [],
|
331 | 363 | "source": [
|
|
339 | 371 | },
|
340 | 372 | {
|
341 | 373 | "cell_type": "code",
|
342 |
| - "execution_count": null, |
| 374 | + "execution_count": 13, |
343 | 375 | "metadata": {},
|
344 |
| - "outputs": [], |
| 376 | + "outputs": [ |
| 377 | + { |
| 378 | + "name": "stdout", |
| 379 | + "output_type": "stream", |
| 380 | + "text": [ |
| 381 | + "2178309\n" |
| 382 | + ] |
| 383 | + } |
| 384 | + ], |
345 | 385 | "source": [
|
346 | 386 | "print(fib_tail(32, 0, 1))"
|
347 | 387 | ]
|
348 | 388 | },
|
349 | 389 | {
|
350 | 390 | "cell_type": "code",
|
351 |
| - "execution_count": null, |
| 391 | + "execution_count": 14, |
352 | 392 | "metadata": {},
|
353 |
| - "outputs": [], |
| 393 | + "outputs": [ |
| 394 | + { |
| 395 | + "data": { |
| 396 | + "text/plain": [ |
| 397 | + "1.3885000953450799e-05" |
| 398 | + ] |
| 399 | + }, |
| 400 | + "execution_count": 14, |
| 401 | + "metadata": {}, |
| 402 | + "output_type": "execute_result" |
| 403 | + } |
| 404 | + ], |
354 | 405 | "source": [
|
355 | 406 | "timeit(\"fib_tail(32, 0, 1)\", globals=globals(), number=1)"
|
356 | 407 | ]
|
|
0 commit comments