711 lines
43 KiB
HTML
711 lines
43 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head prefix="og: http://ogp.me/ns# article: http://ogp.me/ns/article#">
|
||
<meta charset="UTF-8" />
|
||
|
||
<meta name="generator" content="Hugo 0.113.0"><meta name="theme-color" content="#fff" />
|
||
<meta name="color-scheme" content="light dark">
|
||
|
||
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
|
||
<meta name="format-detection" content="telephone=no, date=no, address=no, email=no" />
|
||
|
||
<meta http-equiv="Cache-Control" content="no-transform" />
|
||
|
||
<meta http-equiv="Cache-Control" content="no-siteapp" />
|
||
|
||
<title>递归 | 飞鸿踏雪</title>
|
||
|
||
<link rel="stylesheet" href="/css/meme.min.12a3541920a798d49c1bca858f15c53090f14ce9367a34faa2bb51dd38299730.css"/>
|
||
|
||
|
||
|
||
<script src="/js/meme.min.ac2b48f322cff6a9a8036be3baf3e59e300cd9e4191997a8c3765f79de02bf8d.js"></script>
|
||
|
||
|
||
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||
|
||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,500;0,700;1,400;1,700&family=Noto+Serif+SC:wght@400;500;700&family=Source+Code+Pro:ital,wght@0,400;0,700;1,400;1,700&display=swap" media="print" onload="this.media='all'" />
|
||
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,500;0,700;1,400;1,700&family=Noto+Serif+SC:wght@400;500;700&family=Source+Code+Pro:ital,wght@0,400;0,700;1,400;1,700&display=swap" /></noscript>
|
||
|
||
<meta name="author" content="InkSoul" /><meta name="description" content="递归技术 直接或间接地调用自身的算法称为递归算法 用函数自身给出定义的函数称为递归函数 每……" />
|
||
|
||
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
|
||
<link rel="mask-icon" href="/icons/safari-pinned-tab.svg" color="#2a6df4" />
|
||
<link rel="apple-touch-icon" sizes="180x180" href="/icons/apple-touch-icon.png" />
|
||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||
<meta name="apple-mobile-web-app-title" content="飞鸿踏雪" />
|
||
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
|
||
<meta name="mobile-web-app-capable" content="yes" />
|
||
<meta name="application-name" content="飞鸿踏雪" />
|
||
<meta name="msapplication-starturl" content="../../" />
|
||
<meta name="msapplication-TileColor" content="#fff" />
|
||
<meta name="msapplication-TileImage" content="../../icons/mstile-150x150.png" />
|
||
<link rel="manifest" href="/manifest.json" />
|
||
|
||
|
||
|
||
|
||
|
||
<link rel="canonical" href="http://www.inksoul.top/algorithm/%E9%80%92%E5%BD%92/" />
|
||
|
||
|
||
<script type="application/ld+json">
|
||
{
|
||
"@context": "https://schema.org",
|
||
"@type": "BlogPosting",
|
||
"datePublished": "2022-05-10T09:10:48+08:00",
|
||
"dateModified": "2023-06-18T21:19:01+08:00",
|
||
"url": "http://www.inksoul.top/algorithm/%E9%80%92%E5%BD%92/",
|
||
"headline": "递归",
|
||
"description": "递归技术 直接或间接地调用自身的算法称为递归算法 用函数自身给出定义的函数称为递归函数 每……",
|
||
"inLanguage" : "zh-CN",
|
||
"articleSection": "algorithm",
|
||
"wordCount": 1575 ,
|
||
"image": "http://www.inksoul.top/icons/apple-touch-icon.png",
|
||
"author": {
|
||
"@type": "Person",
|
||
"email": "qingci30@163.com",
|
||
"image": "http://www.inksoul.top/icons/apple-touch-icon.png",
|
||
"url": "http://www.inksoul.top",
|
||
"name": "InkSoul"
|
||
},
|
||
"license": "[CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh)",
|
||
"publisher": {
|
||
"@type": "Organization",
|
||
"name": "飞鸿踏雪",
|
||
"logo": {
|
||
"@type": "ImageObject",
|
||
"url": "http://www.inksoul.top/icons/apple-touch-icon.png"
|
||
},
|
||
"url": "http://www.inksoul.top/"
|
||
},
|
||
"mainEntityOfPage": {
|
||
"@type": "WebSite",
|
||
"@id": "http://www.inksoul.top/"
|
||
}
|
||
}
|
||
</script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<meta property="og:title" content="递归" />
|
||
<meta property="og:description" content="递归技术 直接或间接地调用自身的算法称为递归算法 用函数自身给出定义的函数称为递归函数 每……" />
|
||
<meta property="og:url" content="http://www.inksoul.top/algorithm/%E9%80%92%E5%BD%92/" />
|
||
<meta property="og:site_name" content="飞鸿踏雪" />
|
||
<meta property="og:locale" content="zh" /><meta property="og:image" content="http://www.inksoul.top/icons/apple-touch-icon.png" />
|
||
<meta property="og:type" content="article" />
|
||
<meta property="article:published_time" content="2022-05-10T09:10:48+08:00" />
|
||
<meta property="article:modified_time" content="2023-06-18T21:19:01+08:00" />
|
||
|
||
<meta property="article:section" content="algorithm" />
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</head>
|
||
|
||
<body>
|
||
<div class="container">
|
||
|
||
<header class="header">
|
||
|
||
<div class="header-wrapper">
|
||
<div class="header-inner single">
|
||
|
||
<div class="site-brand">
|
||
|
||
<a href="/" class="brand">飞鸿踏雪</a>
|
||
|
||
</div>
|
||
|
||
<nav class="nav">
|
||
<ul class="menu" id="menu">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="menu-item"><a href="/computergraphic/"><svg class="icon computergraphic" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"></path></svg><span class="menu-item-name">图形学</span></a>
|
||
</li>
|
||
|
||
|
||
|
||
<li class="menu-item active"><a href="/algorithm/"><svg class="icon algorithm" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"></path></svg><span class="menu-item-name">算法</span></a>
|
||
</li>
|
||
|
||
|
||
|
||
<li class="menu-item"><a href="/mathematics/"><svg class="icon mathematics" fill="none" stroke="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path stroker-linecap="round" stroke-linejoin="round" stroker-width="2" d="M576 32.01c0-17.69-14.33-31.1-32-31.1l-224-.0049c-14.69 0-27.48 10-31.05 24.25L197.9 388.3L124.6 241.7C119.2 230.9 108.1 224 96 224L32 224c-17.67 0-32 14.31-32 31.1s14.33 32 32 32h44.22l103.2 206.3c5.469 10.91 16.6 17.68 28.61 17.68c1.172 0 2.323-.0576 3.495-.1826c13.31-1.469 24.31-11.06 27.56-24.06l105.9-423.8H544C561.7 64.01 576 49.7 576 32.01zM566.6 233.4c-12.5-12.5-32.75-12.5-45.25 0L480 274.8l-41.38-41.37c-12.5-12.5-32.75-12.5-45.25 0s-12.5 32.75 0 45.25l41.38 41.38l-41.38 41.38c-12.5 12.5-12.5 32.75 0 45.25C399.6 412.9 407.8 416 416 416s16.38-3.125 22.62-9.375L480 365.3l41.38 41.38C527.6 412.9 535.8 416 544 416s16.38-3.125 22.62-9.375c12.5-12.5 12.5-32.75 0-45.25l-41.38-41.38L566.6 278.6C579.1 266.1 579.1 245.9 566.6 233.4z"/></svg><span class="menu-item-name">数学</span></a>
|
||
</li>
|
||
|
||
|
||
|
||
<li class="menu-item"><a href="/408/"><svg class="icon 408" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticon 408s, Inc. --><path d="M172.1 40.16L268.1 3.76C280.9-1.089 295.1-1.089 307.9 3.76L403.9 40.16C425.6 48.41 440 69.25 440 92.52V204.7C441.3 205.1 442.6 205.5 443.9 205.1L539.9 242.4C561.6 250.6 576 271.5 576 294.7V413.9C576 436.1 562.9 456.2 542.5 465.1L446.5 507.3C432.2 513.7 415.8 513.7 401.5 507.3L288 457.5L174.5 507.3C160.2 513.7 143.8 513.7 129.5 507.3L33.46 465.1C13.13 456.2 0 436.1 0 413.9V294.7C0 271.5 14.39 250.6 36.15 242.4L132.1 205.1C133.4 205.5 134.7 205.1 136 204.7V92.52C136 69.25 150.4 48.41 172.1 40.16V40.16zM290.8 48.64C289 47.95 286.1 47.95 285.2 48.64L206.8 78.35L287.1 109.5L369.2 78.35L290.8 48.64zM392 210.6V121L309.6 152.6V241.8L392 210.6zM154.8 250.9C153 250.2 150.1 250.2 149.2 250.9L70.81 280.6L152 311.7L233.2 280.6L154.8 250.9zM173.6 455.3L256 419.1V323.2L173.6 354.8V455.3zM342.8 280.6L424 311.7L505.2 280.6L426.8 250.9C425 250.2 422.1 250.2 421.2 250.9L342.8 280.6zM528 413.9V323.2L445.6 354.8V455.3L523.2 421.2C526.1 419.9 528 417.1 528 413.9V413.9z"/></svg><span class="menu-item-name">408</span></a>
|
||
</li>
|
||
|
||
|
||
|
||
<li class="menu-item"><a href="/stuff/"><svg class="icon stuff" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticon stuffs, Inc. --><path d="M216 104C202.8 104 192 114.8 192 128s10.75 24 24 24c79.41 0 144 64.59 144 144C360 309.3 370.8 320 384 320s24-10.75 24-24C408 190.1 321.9 104 216 104zM224 0C206.3 0 192 14.31 192 32s14.33 32 32 32c123.5 0 224 100.5 224 224c0 17.69 14.33 32 32 32s32-14.31 32-32C512 129.2 382.8 0 224 0zM188.9 346l27.37-27.37c2.625 .625 5.059 1.506 7.809 1.506c17.75 0 31.99-14.26 31.99-32c0-17.62-14.24-32.01-31.99-32.01c-17.62 0-31.99 14.38-31.99 32.01c0 2.875 .8099 5.25 1.56 7.875L166.2 323.4L49.37 206.5c-7.25-7.25-20.12-6-24.1 3c-41.75 77.88-29.88 176.7 35.75 242.4c65.62 65.62 164.6 77.5 242.4 35.75c9.125-5 10.38-17.75 3-25L188.9 346z"/></svg><span class="menu-item-name">杂物</span></a>
|
||
</li>
|
||
|
||
|
||
|
||
<li class="menu-item"><a href="/about/"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512" class="icon user-circle"><path d="M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 96c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88zm0 344c-58.7 0-111.3-26.6-146.5-68.2 18.8-35.4 55.6-59.8 98.5-59.8 2.4 0 4.8.4 7.1 1.1 13 4.2 26.6 6.9 40.9 6.9 14.3 0 28-2.7 40.9-6.9 2.3-.7 4.7-1.1 7.1-1.1 42.9 0 79.7 24.4 98.5 59.8C359.3 421.4 306.7 448 248 448z"/></svg><span class="menu-item-name">关于</span></a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="menu-item">
|
||
<a id="theme-switcher" href="#"><span class="icon theme-icon-light">🌞</span><span class="icon theme-icon-dark">🌙</span></a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<input type="checkbox" id="nav-toggle" aria-hidden="true" />
|
||
<label for="nav-toggle" class="nav-toggle"></label>
|
||
<label for="nav-toggle" class="nav-curtain"></label>
|
||
|
||
|
||
|
||
</header>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<main class="main single" id="main">
|
||
<div class="main-inner">
|
||
|
||
|
||
|
||
<article class="content post h-entry" data-align="justify" data-type="algorithm" data-toc-num="true">
|
||
|
||
<h1 class="post-title p-name">递归</h1>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-body e-content">
|
||
<ul>
|
||
<li>递归技术
|
||
<ul>
|
||
<li>直接或间接地调用自身的算法称为递归算法</li>
|
||
<li>用函数自身给出定义的函数称为递归函数</li>
|
||
<li>每个递归函数都必须有非递归定义的初始值,否则递归函数无法计算</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<hr>
|
||
<ul>
|
||
<li>阶乘函数
|
||
<ul>
|
||
<li>
|
||
<p>可递归地定义为$n!= \begin{cases}1,& \text{n=0} \\ n(n-1)!,&\text{n>0} \end{cases}$</p>
|
||
<div class="highlight"><div class="chroma">
|
||
<div class="table-container"><table class="lntable"><tr><td class="lntd">
|
||
<pre tabindex="0" class="chroma"><code><span class="lnt">1
|
||
</span><span class="lnt">2
|
||
</span><span class="lnt">3
|
||
</span><span class="lnt">4
|
||
</span><span class="lnt">5
|
||
</span></code></pre></td>
|
||
<td class="lntd">
|
||
<pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"> <span class="kd">public</span> <span class="kd">static</span> <span class="kt">int</span> <span class="nf">Factorial</span><span class="o">(</span><span class="kt">int</span> <span class="n">n</span><span class="o">){</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="k">if</span><span class="o">(</span><span class="n">n</span><span class="o">==</span><span class="mi">0</span><span class="o">)</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="mi">1</span><span class="o">;</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">n</span><span class="o">*</span><span class="n">Factorial</span><span class="o">(</span><span class="n">n</span><span class="o">-</span><span class="mi">1</span><span class="o">);</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
|
||
</span></span></code></pre></td></tr></table></div>
|
||
</div>
|
||
</div></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<hr>
|
||
<ul>
|
||
<li>
|
||
<p>Fibonacci数列</p>
|
||
<ul>
|
||
<li>可递归地定义为$F(n)=\begin{cases}1, &\text{n=0},1 \\ F(n-1)+F(n-2) &\text{n>1} \end{cases}$</li>
|
||
</ul>
|
||
<div class="highlight"><div class="chroma">
|
||
<div class="table-container"><table class="lntable"><tr><td class="lntd">
|
||
<pre tabindex="0" class="chroma"><code><span class="lnt">1
|
||
</span><span class="lnt">2
|
||
</span><span class="lnt">3
|
||
</span><span class="lnt">4
|
||
</span><span class="lnt">5
|
||
</span></code></pre></td>
|
||
<td class="lntd">
|
||
<pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"> <span class="kd">public</span> <span class="kd">static</span> <span class="kt">int</span> <span class="nf">fibonacci</span><span class="o">(</span><span class="kt">int</span> <span class="n">n</span><span class="o">){</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="k">if</span><span class="o">(</span><span class="n">n</span><span class="o"><=</span><span class="mi">1</span><span class="o">)</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="mi">1</span><span class="o">;</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">fibonacci</span><span class="o">(</span><span class="n">n</span><span class="o">-</span><span class="mi">1</span><span class="o">)+</span><span class="n">fibonacci</span><span class="o">(</span><span class="n">n</span><span class="o">-</span><span class="mi">2</span><span class="o">);</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
|
||
</span></span></code></pre></td></tr></table></div>
|
||
</div>
|
||
</div></li>
|
||
</ul>
|
||
<hr>
|
||
<ul>
|
||
<li>
|
||
<p>排列问题</p>
|
||
<ul>
|
||
<li>
|
||
<p>当$n=1时,perm(R)=(r)$,其中r是集合R中唯一的元素;</p>
|
||
</li>
|
||
<li>
|
||
<p>$当n>1时,perm(R)=(r)$
|
||
$perm(R)由(r_1)perm(R_1),(r_2)perm(R_2),\cdots,(r_n)perm(R_n)构成$</p>
|
||
</li>
|
||
<li>
|
||
<p>算法perm(list,k,m)递归地产生所有前缀是list[0:k-1],且后缀是list[k:m]的全排列的所有排列。调用perm(list,0,n-1)即产生list[0:n-1]的全排列</p>
|
||
</li>
|
||
<li>
|
||
<p>一般情况下,$k<m$</p>
|
||
<div class="highlight"><div class="chroma">
|
||
<div class="table-container"><table class="lntable"><tr><td class="lntd">
|
||
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
|
||
</span><span class="lnt"> 2
|
||
</span><span class="lnt"> 3
|
||
</span><span class="lnt"> 4
|
||
</span><span class="lnt"> 5
|
||
</span><span class="lnt"> 6
|
||
</span><span class="lnt"> 7
|
||
</span><span class="lnt"> 8
|
||
</span><span class="lnt"> 9
|
||
</span><span class="lnt">10
|
||
</span><span class="lnt">11
|
||
</span><span class="lnt">12
|
||
</span><span class="lnt">13
|
||
</span><span class="lnt">14
|
||
</span><span class="lnt">15
|
||
</span><span class="lnt">16
|
||
</span><span class="lnt">17
|
||
</span><span class="lnt">18
|
||
</span><span class="lnt">19
|
||
</span><span class="lnt">20
|
||
</span><span class="lnt">21
|
||
</span><span class="lnt">22
|
||
</span><span class="lnt">23
|
||
</span></code></pre></td>
|
||
<td class="lntd">
|
||
<pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">perm</span><span class="o">(</span><span class="n">Object</span><span class="o">[]</span> <span class="n">list</span><span class="o">,</span><span class="kt">int</span> <span class="n">k</span><span class="o">,</span><span class="kt">int</span> <span class="n">m</span><span class="o">){</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="k">if</span><span class="o">(</span><span class="n">k</span><span class="o">==</span><span class="n">m</span><span class="o">){</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="c1">//只剩一个元素
|
||
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="k">for</span><span class="o">(</span><span class="kt">int</span> <span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="o">;</span><span class="n">i</span><span class="o"><=</span><span class="n">m</span><span class="o">;</span><span class="n">i</span><span class="o">++)</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">print</span><span class="o">(</span><span class="n">list</span><span class="o">[</span><span class="n">i</span><span class="o">]);</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">();</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="k">else</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="c1">//还有多个元素,递归产生排列
|
||
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="k">for</span><span class="o">(</span><span class="kt">int</span> <span class="n">i</span><span class="o">=</span><span class="n">k</span><span class="o">;</span><span class="n">i</span><span class="o"><=</span><span class="n">m</span><span class="o">;</span><span class="n">i</span><span class="o">++)</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="o">{</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="n">MyMath</span><span class="o">.</span><span class="na">swap</span><span class="o">(</span><span class="n">list</span><span class="o">,</span><span class="n">k</span><span class="o">,</span><span class="n">i</span><span class="o">);</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="n">perm</span><span class="o">(</span><span class="n">list</span><span class="o">,</span><span class="n">k</span><span class="o">+</span><span class="mi">1</span><span class="o">,</span><span class="n">m</span><span class="o">);</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="n">MyMath</span><span class="o">.</span><span class="na">swap</span><span class="o">(</span><span class="n">list</span><span class="o">,</span><span class="n">k</span><span class="o">,</span><span class="n">i</span><span class="o">);</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
|
||
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="kd">static</span> <span class="kd">class</span> <span class="nc">MyMath</span><span class="o">{</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">swap</span><span class="o">(</span><span class="n">Object</span><span class="o">[]</span> <span class="n">list</span><span class="o">,</span><span class="kt">int</span> <span class="n">k</span><span class="o">,</span><span class="kt">int</span> <span class="n">m</span><span class="o">){</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="kt">int</span> <span class="n">temp</span> <span class="o">=</span> <span class="n">k</span><span class="o">;</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="n">k</span> <span class="o">=</span> <span class="n">m</span><span class="o">;</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="n">m</span> <span class="o">=</span> <span class="n">temp</span><span class="o">;</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
|
||
</span></span></code></pre></td></tr></table></div>
|
||
</div>
|
||
</div></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<hr>
|
||
<ul>
|
||
<li>
|
||
<p>整数划分问题</p>
|
||
<ul>
|
||
<li>
|
||
<p>将正整数$n$表示成一系列正整数之和,$n=n_1+n_2+...+n_k$,其中$n_1\geq n_2\geq ...\geq n_k\geq 1,k\geq 1$</p>
|
||
</li>
|
||
<li>
|
||
<p>将最大加数$n_1$不大于$m$的划分个数记作$q(n,m)$可建立如下递归关系</p>
|
||
<ul>
|
||
<li>当最大加数$n_1$不大于1时,任何正整数n只有一种划分形式,即$n=\begin{matrix} n \\ \overbrace{1+1+\cdots+1}\end{matrix}$</li>
|
||
<li>最大加数$n_1$实际上不能大于$n$。因此,$q(1,m)=1$。</li>
|
||
<li>正整数$n$的划分由$n_1=n$的划分和$n_1\leq n-1$的划分组成</li>
|
||
<li>正整数$n$的最大加数$n_1$不大于$m$的划分由$n_1=m$的划分和$n_1\leq m-1$的划分组成</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<div class="highlight"><div class="chroma">
|
||
<div class="table-container"><table class="lntable"><tr><td class="lntd">
|
||
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
|
||
</span><span class="lnt"> 2
|
||
</span><span class="lnt"> 3
|
||
</span><span class="lnt"> 4
|
||
</span><span class="lnt"> 5
|
||
</span><span class="lnt"> 6
|
||
</span><span class="lnt"> 7
|
||
</span><span class="lnt"> 8
|
||
</span><span class="lnt"> 9
|
||
</span><span class="lnt">10
|
||
</span><span class="lnt">11
|
||
</span></code></pre></td>
|
||
<td class="lntd">
|
||
<pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"> <span class="kd">public</span> <span class="kd">static</span> <span class="kt">int</span> <span class="nf">q</span><span class="o">(</span><span class="kt">int</span> <span class="n">n</span><span class="o">,</span><span class="kt">int</span> <span class="n">m</span><span class="o">){</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="k">if</span><span class="o">((</span><span class="n">n</span><span class="o"><</span><span class="mi">1</span><span class="o">)||(</span><span class="n">m</span><span class="o"><</span><span class="mi">1</span><span class="o">))</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="mi">0</span><span class="o">;</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="k">if</span><span class="o">((</span><span class="n">n</span><span class="o">==</span><span class="mi">1</span><span class="o">)||(</span><span class="n">m</span><span class="o">==</span><span class="mi">1</span><span class="o">))</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="mi">1</span><span class="o">;</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="k">if</span><span class="o">(</span><span class="n">n</span><span class="o"><</span><span class="n">m</span><span class="o">)</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">q</span><span class="o">(</span><span class="n">n</span><span class="o">,</span><span class="n">n</span><span class="o">);</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="k">if</span><span class="o">(</span><span class="n">n</span><span class="o">==</span><span class="n">m</span><span class="o">)</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">q</span><span class="o">(</span><span class="n">n</span><span class="o">,</span><span class="n">m</span><span class="o">-</span><span class="mi">1</span><span class="o">)+</span><span class="mi">1</span><span class="o">;</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">q</span><span class="o">(</span><span class="n">n</span><span class="o">,</span><span class="n">m</span><span class="o">-</span><span class="mi">1</span><span class="o">)+</span><span class="n">q</span><span class="o">(</span><span class="n">n</span><span class="o">-</span><span class="n">m</span><span class="o">,</span><span class="n">m</span><span class="o">);</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
|
||
</span></span></code></pre></td></tr></table></div>
|
||
</div>
|
||
</div></li>
|
||
</ul>
|
||
<hr>
|
||
<ul>
|
||
<li>
|
||
<p>Hanoi塔问题</p>
|
||
<ul>
|
||
<li>
|
||
<p>设a,b,c是三个塔座。开始是在塔座a上有一叠共n个圆盘,这些圆盘自下而上,由大到小地叠在一起。各圆盘从小到大编号为1,2,···,n。现要求将塔座a上的这一叠圆盘移到塔座b上,并仍按同样顺序叠置。在移动圆盘时应该遵守以下移动规则。</p>
|
||
<ul>
|
||
<li>每次只移动一个圆盘</li>
|
||
<li>任何时刻都不允许将较大的圆盘压在较小的圆盘之上。</li>
|
||
<li>在满足前两个规则的前提下,可将圆盘移至a,b,c任一塔座上</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<p>递归关系</p>
|
||
<ul>
|
||
<li>$n=1$时,将编号为一的圆盘从塔座a直接移至塔座b上即可。</li>
|
||
<li>$n>1$时,需要利用塔座c作为辅助塔座,
|
||
<ul>
|
||
<li>将$n-1$个较小的圆盘依照移动规则从塔座a移至塔座c,</li>
|
||
<li>将剩下的最大圆盘从塔座a移至塔座b,</li>
|
||
<li>将$n-1$个较小的圆盘依照移动规则从塔座c移至塔座b</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<div class="highlight"><div class="chroma">
|
||
<div class="table-container"><table class="lntable"><tr><td class="lntd">
|
||
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
|
||
</span><span class="lnt"> 2
|
||
</span><span class="lnt"> 3
|
||
</span><span class="lnt"> 4
|
||
</span><span class="lnt"> 5
|
||
</span><span class="lnt"> 6
|
||
</span><span class="lnt"> 7
|
||
</span><span class="lnt"> 8
|
||
</span><span class="lnt"> 9
|
||
</span><span class="lnt">10
|
||
</span><span class="lnt">11
|
||
</span></code></pre></td>
|
||
<td class="lntd">
|
||
<pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"> <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">hanoi</span><span class="o">(</span><span class="kt">int</span> <span class="n">n</span><span class="o">,</span><span class="kt">char</span> <span class="n">a</span><span class="o">,</span><span class="kt">char</span> <span class="n">b</span><span class="o">,</span><span class="kt">char</span> <span class="n">c</span><span class="o">){</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="k">if</span><span class="o">(</span><span class="n">n</span><span class="o">></span><span class="mi">0</span><span class="o">){</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="n">hanoi</span><span class="o">(</span><span class="n">n</span><span class="o">-</span><span class="mi">1</span><span class="o">,</span> <span class="n">a</span><span class="o">,</span> <span class="n">c</span><span class="o">,</span> <span class="n">b</span><span class="o">);</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="n">move</span><span class="o">(</span><span class="n">n</span><span class="o">,</span><span class="n">a</span><span class="o">,</span><span class="n">b</span><span class="o">);</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="n">hanoi</span><span class="o">(</span><span class="n">n</span><span class="o">-</span><span class="mi">1</span><span class="o">,</span><span class="n">c</span><span class="o">,</span><span class="n">b</span><span class="o">,</span><span class="n">a</span><span class="o">);</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">move</span><span class="o">(</span><span class="kt">int</span> <span class="n">n</span><span class="o">,</span><span class="kt">char</span> <span class="n">a</span><span class="o">,</span><span class="kt">char</span> <span class="n">b</span><span class="o">){</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"第"</span><span class="o">+</span><span class="n">n</span><span class="o">+</span><span class="s">"个盘子从"</span><span class="o">+</span><span class="n">a</span><span class="o">+</span><span class="s">"--->"</span><span class="o">+</span><span class="n">b</span><span class="o">);</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
|
||
</span></span></code></pre></td></tr></table></div>
|
||
</div>
|
||
</div></li>
|
||
<li>
|
||
<p>递归调用总结和系统原理</p>
|
||
<ul>
|
||
<li>实现递归调用的关键:为算法建立递归调用工作栈</li>
|
||
<li>运行被调用算法前的行为
|
||
<ul>
|
||
<li>为所有实参指针,返回地址等信息传递给被调用算法</li>
|
||
<li>为被调用算法的局部变量分配存储区</li>
|
||
<li>将控制转移到被调用算法的入口</li>
|
||
</ul>
|
||
</li>
|
||
<li>从被调用算法返回调用算法时
|
||
<ul>
|
||
<li>保存被调用算法的计算结果</li>
|
||
<li>释放分配给被调用算法的数据区</li>
|
||
<li>依照被调用算法保存的返回地址将控制转移到调用算法</li>
|
||
</ul>
|
||
</li>
|
||
<li>嵌套调用时的系统原则:后调用先返回,即算法间的信息传递和控制转移通过栈来实现</li>
|
||
<li>递归算法的调用层次
|
||
<ul>
|
||
<li>调用一个递归算法的主算法为第0层算法</li>
|
||
<li>从主算法调用递归算法为进入第1层调用</li>
|
||
<li>从第i层递归调用本算法为进入第i+1层调用。</li>
|
||
<li>退出第i层递归调用,则返回至i-1层调用。</li>
|
||
</ul>
|
||
</li>
|
||
<li>递归调用的栈使用情况示意</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<div class="table-container"><table>
|
||
<thead>
|
||
<tr>
|
||
<th style="text-align:center">主算法栈块</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td style="text-align:center">M</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="text-align:center">主算法调用递归算法A的栈块</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="text-align:center">算法A的第一层递归调用工作记录</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="text-align:center">算法A的第二层递归调用工作记录</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="text-align:center">TOP</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="text-align:center">M</td>
|
||
</tr>
|
||
</tbody>
|
||
</table></div>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
</article>
|
||
|
||
|
||
|
||
|
||
<div class="updated-badge-container">
|
||
<span title="Updated @ 2023-06-18 21:19:01 CST" style="cursor:help">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="130" height="20" class="updated-badge"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="130" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path class="updated-badge-left" d="M0 0h55v20H0z"/><path class="updated-badge-right" d="M55 0h75v20H55z"/><path fill="url(#b)" d="M0 0h130v20H0z"/></g><g fill="#fff" text-anchor="middle" font-size="110"><text x="285" y="150" fill="#010101" fill-opacity=".3" textLength="450" transform="scale(.1)">updated</text><text x="285" y="140" textLength="450" transform="scale(.1)">updated</text><text x="915" y="150" fill="#010101" fill-opacity=".3" textLength="650" transform="scale(.1)">2023-06-18</text><text x="915" y="140" textLength="650" transform="scale(.1)">2023-06-18</text></g></svg>
|
||
</span></div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<ul class="post-nav">
|
||
|
||
<li class="post-nav-prev">
|
||
<a href="/algorithm/%E6%8E%92%E5%BA%8F%E5%90%88%E9%9B%86/" rel="prev">< 排序合集</a>
|
||
</li>
|
||
|
||
|
||
<li class="post-nav-next">
|
||
<a href="/algorithm/%E5%88%86%E6%B2%BB%E6%B3%95/" rel="next">分治法 ></a>
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</main>
|
||
|
||
|
||
|
||
<div id="back-to-top" class="back-to-top">
|
||
<a href="#"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" class="icon arrow-up"><path d="M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z"/></svg></a>
|
||
</div>
|
||
|
||
|
||
|
||
<footer id="footer" class="footer">
|
||
<div class="footer-inner">
|
||
<div class="site-info">© 2022–2023 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="icon footer-icon"><path d="M462.3 62.6C407.5 15.9 326 24.3 275.7 76.2L256 96.5l-19.7-20.3C186.1 24.3 104.5 15.9 49.7 62.6c-62.8 53.6-66.1 149.8-9.9 207.9l193.5 199.8c12.5 12.9 32.8 12.9 45.3 0l193.5-199.8c56.3-58.1 53-154.3-9.8-207.9z"/></svg> InkSoul</div><div class="powered-by">Powered by <a href="https://github.com/gohugoio/hugo" target="_blank" rel="noopener">Hugo</a> | Theme is <a href="https://github.com/reuixiy/hugo-theme-meme" target="_blank" rel="noopener">MemE</a></div><div class="site-copyright"><a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh" target="_blank" rel="noopener">CC BY-NC-SA 4.0</a></div><div class="custom-footer"><a href="https://beian.miit.gov.cn" target="_blank" rel="noopener">闽ICP备2022009452号-1</a></div>
|
||
|
||
|
||
|
||
<ul class="socials"><li class="socials-item">
|
||
<a href="mailto:qingci30@163.com" target="_blank" rel="external noopener" title="Email"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="icon social-icon"><path d="M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49-16.841 13.247-50.201 45.072-73.413 44.701-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112h416zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646 21.857 17.205 60.134 55.186 103.062 54.955 42.717.231 80.509-37.199 103.053-54.947 49.528-38.783 82.032-64.401 104.947-82.653V400H48z"/></svg></a>
|
||
</li><li class="socials-item">
|
||
<a href="https://github.com/ink-soul" target="_blank" rel="external noopener" title="GitHub"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="icon social-icon"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a>
|
||
</li><li class="socials-item">
|
||
<a href="http://gitea.inksoul.top/inksoul" target="_blank" rel="external noopener" title="gitea"><svg class="icon social-icon" fill="none" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M4.209 4.603c-.247 0-.525.02-.84.088-.333.07-1.28.283-2.054 1.027C-.403 7.25.035 9.685.089 10.052c.065.446.263 1.687 1.21 2.768 1.749 2.141 5.513 2.092 5.513 2.092s.462 1.103 1.168 2.119c.955 1.263 1.936 2.248 2.89 2.367 2.406 0 7.212-.004 7.212-.004s.458.004 1.08-.394c.535-.324 1.013-.893 1.013-.893s.492-.527 1.18-1.73c.21-.37.385-.729.538-1.068 0 0 2.107-4.471 2.107-8.823-.042-1.318-.367-1.55-.443-1.627-.156-.156-.366-.153-.366-.153s-4.475.252-6.792.306c-.508.011-1.012.023-1.512.027v4.474l-.634-.301c0-1.39-.004-4.17-.004-4.17-1.107.016-3.405-.084-3.405-.084s-5.399-.27-5.987-.324c-.187-.011-.401-.032-.648-.032zm.354 1.832h.111s.271 2.269.6 3.597C5.549 11.147 6.22 13 6.22 13s-.996-.119-1.641-.348c-.99-.324-1.409-.714-1.409-.714s-.73-.511-1.096-1.52C1.444 8.73 2.021 7.7 2.021 7.7s.32-.859 1.47-1.145c.395-.106.863-.12 1.072-.12zm8.33 2.554c.26.003.509.127.509.127l.868.422-.529 1.075a.686.686 0 0 0-.614.359.685.685 0 0 0 .072.756l-.939 1.924a.69.69 0 0 0-.66.527.687.687 0 0 0 .347.763.686.686 0 0 0 .867-.206.688.688 0 0 0-.069-.882l.916-1.874a.667.667 0 0 0 .237-.02.657.657 0 0 0 .271-.137 8.826 8.826 0 0 1 1.016.512.761.761 0 0 1 .286.282c.073.21-.073.569-.073.569-.087.29-.702 1.55-.702 1.55a.692.692 0 0 0-.676.477.681.681 0 1 0 1.157-.252c.073-.141.141-.282.214-.431.19-.397.515-1.16.515-1.16.035-.066.218-.394.103-.814-.095-.435-.48-.638-.48-.638-.467-.301-1.116-.58-1.116-.58s0-.156-.042-.27a.688.688 0 0 0-.148-.241l.516-1.062 2.89 1.401s.48.218.583.619c.073.282-.019.534-.069.657-.24.587-2.1 4.317-2.1 4.317s-.232.554-.748.588a1.065 1.065 0 0 1-.393-.045l-.202-.08-4.31-2.1s-.417-.218-.49-.596c-.083-.31.104-.691.104-.691l2.073-4.272s.183-.37.466-.497a.855.855 0 0 1 .35-.077z" ></path></svg></a>
|
||
</li><li class="socials-item">
|
||
<a href="https://space.bilibili.com/262369930" target="_blank" rel="external noopener" title="bilibili"><svg class="icon social-icon" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M17.813 4.653h.854c1.51.054 2.769.578 3.773 1.574 1.004.995 1.524 2.249 1.56 3.76v7.36c-.036 1.51-.556 2.769-1.56 3.773s-2.262 1.524-3.773 1.56H5.333c-1.51-.036-2.769-.556-3.773-1.56S.036 18.858 0 17.347v-7.36c.036-1.511.556-2.765 1.56-3.76 1.004-.996 2.262-1.52 3.773-1.574h.774l-1.174-1.12a1.234 1.234 0 0 1-.373-.906c0-.356.124-.658.373-.907l.027-.027c.267-.249.573-.373.92-.373.347 0 .653.124.92.373L9.653 4.44c.071.071.134.142.187.213h4.267a.836.836 0 0 1 .16-.213l2.853-2.747c.267-.249.573-.373.92-.373.347 0 .662.151.929.4.267.249.391.551.391.907 0 .355-.124.657-.373.906zM5.333 7.24c-.746.018-1.373.276-1.88.773-.506.498-.769 1.13-.786 1.894v7.52c.017.764.28 1.395.786 1.893.507.498 1.134.756 1.88.773h13.334c.746-.017 1.373-.275 1.88-.773.506-.498.769-1.129.786-1.893v-7.52c-.017-.765-.28-1.396-.786-1.894-.507-.497-1.134-.755-1.88-.773zM8 11.107c.373 0 .684.124.933.373.25.249.383.569.4.96v1.173c-.017.391-.15.711-.4.96-.249.25-.56.374-.933.374s-.684-.125-.933-.374c-.25-.249-.383-.569-.4-.96V12.44c0-.373.129-.689.386-.947.258-.257.574-.386.947-.386zm8 0c.373 0 .684.124.933.373.25.249.383.569.4.96v1.173c-.017.391-.15.711-.4.96-.249.25-.56.374-.933.374s-.684-.125-.933-.374c-.25-.249-.383-.569-.4-.96V12.44c.017-.391.15-.711.4-.96.249-.249.56-.373.933-.373Z"/></svg></a>
|
||
</li></ul>
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</footer>
|
||
|
||
|
||
</div>
|
||
<script>
|
||
if ('serviceWorker' in navigator) {
|
||
window.addEventListener('load', function() {
|
||
navigator.serviceWorker.register('\/sw.js');
|
||
});
|
||
}
|
||
</script>
|
||
|
||
|
||
|
||
<link rel="stylesheet" href="https://fastly.jsdelivr.net/npm/katex@0.13.0/dist/katex.min.css" integrity="sha256-gPJfuwTULrEAAcI3X4bALVU/2qBU+QY/TpoD3GO+Exw=" crossorigin="anonymous">
|
||
|
||
<script>
|
||
if (typeof renderMathInElement === 'undefined') {
|
||
var getScript = (options) => {
|
||
var script = document.createElement('script');
|
||
script.defer = true;
|
||
script.crossOrigin = 'anonymous';
|
||
Object.keys(options).forEach((key) => {
|
||
script[key] = options[key];
|
||
});
|
||
document.body.appendChild(script);
|
||
};
|
||
getScript({
|
||
src: 'https:\/\/fastly.jsdelivr.net/npm/katex@0.13.0/dist/katex.min.js',
|
||
integrity: 'sha256-YTW9cMncW/ZQMhY69KaUxIa2cPTxV87Uh627Gf5ODUw=',
|
||
onload: () => {
|
||
getScript({
|
||
src: 'https:\/\/fastly.jsdelivr.net/npm/katex@0.13.0/dist/contrib/mhchem.min.js',
|
||
integrity: 'sha256-yzSfYeVsWJ1x+2g8CYHsB/Mn7PcSp8122k5BM4T3Vxw=',
|
||
onload: () => {
|
||
getScript({
|
||
src: 'https:\/\/fastly.jsdelivr.net/npm/katex@0.13.0/dist/contrib/auto-render.min.js',
|
||
integrity: 'sha256-fxJzNV6hpc8tgW8tF0zVobKa71eTCRGTgxFXt1ZpJNM=',
|
||
onload: () => {
|
||
renderKaTex();
|
||
}
|
||
});
|
||
}
|
||
});
|
||
}
|
||
});
|
||
} else {
|
||
renderKaTex();
|
||
}
|
||
function renderKaTex() {
|
||
renderMathInElement(
|
||
document.body,
|
||
{
|
||
delimiters: [
|
||
{left: "$$", right: "$$", display: true},
|
||
{left: "\\[", right: "\\]", display: true},
|
||
{left: "$", right: "$", display: false},
|
||
{left: "\\(", right: "\\)", display: false}
|
||
]
|
||
}
|
||
);
|
||
}
|
||
</script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script src="https://fastly.jsdelivr.net/npm/medium-zoom@latest/dist/medium-zoom.min.js"></script>
|
||
|
||
<script>
|
||
let imgNodes = document.querySelectorAll('div.post-body img');
|
||
imgNodes = Array.from(imgNodes).filter(node => node.parentNode.tagName !== "A");
|
||
|
||
mediumZoom(imgNodes, {
|
||
background: 'hsla(var(--color-bg-h), var(--color-bg-s), var(--color-bg-l), 0.95)'
|
||
})
|
||
</script>
|
||
|
||
|
||
|
||
|
||
<script src="https://fastly.jsdelivr.net/npm/instant.page@5.1.0/instantpage.min.js" type="module" defer></script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</body>
|
||
</html>
|