亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? c43.htm

?? 經典c語言教程
?? HTM
字號:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title> 遞歸 </title>
<script language="javascript">
    var prePage="http://www.nec.sjtu.edu.cn/support/Course/C/c/c4/c/c4/c42.htm";
    var nextPage="c/c4/c44.htm";
</script>

<link rel="stylesheet" href="../cstyle.css" type="text/css">
<bgsound src="../voice/c43.au" loop="1">
</head>

<body background="../img/mainback.jpg" bgproperties="fixed">
<font SIZE="3">

<h2 align="center"></font><font face="楷體_GB2312"><a name="_top"></a>4.3 遞歸</font></h2>
<div align="center"><center>

<table border="0" width="100%" cellspacing="0" cellpadding="0">
  <tr>
    <td width="33%" align="center"><a href="c43.htm#c431.html#c431">引言</a></td>
    <td width="33%" align="center"><a href="c43.htm#c432.html#c432"><font FACE="宋體" SIZE="3">遞歸和迭代</font></a></td>
    <td width="34%" align="center"><a href="c43.htm#c433.html#c433"><font FACE="宋體" SIZE="3">實例</font></a></td>
  </tr>
</table>
</center></div>

<hr>

<h3><a name="c431"></a>1.引言</h3>

<blockquote>
  <font FACE="宋體" SIZE="3"><p ALIGN="JUSTIFY"></font><font face="宋體">C 
  語言中的函數可以直接或間接地調用其本身, 
  這和其它語言不同。它為程序員帶來了極大的靈活性。</font></p>
  <p ALIGN="JUSTIFY"><font face="宋體">最顯然的情況是直接遞歸,即在函數中直接顯式地調用它本身。我們來看一個簡單的關于遞歸的例子:</font></p>
  <p ALIGN="JUSTIFY"><font face="宋體"><font color="#000080">f(int n)<br>
  {<br>
  &nbsp;&nbsp;&nbsp; ...<br>
  &nbsp;&nbsp;&nbsp; </font><font color="#FF0000">f(n/2);</font><font color="#000080"><br>
  &nbsp;&nbsp;&nbsp; ...<br>
  }</font></font></p>
  <p ALIGN="JUSTIFY"><font face="宋體">另外的情形是, 
  一個函數調用另一個函數, 
  它又返過來調用第一個函數。這種情形稱為間接遞歸。例如:</font></p>
  <table border="0" width="84%">
    <tr>
      <td width="50%"><font face="宋體"><font color="#000080">a(int n) <br>
      { <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><font color="#FF0000">b(n/3);</font><font
      color="#000080"><br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... <br>
      }</font></font></td>
      <td width="50%"><font face="宋體"><font color="#000080">b(int n)<br>
      {<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><font color="#FF0000">a(n/2);</font><font
      color="#000080"><br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br>
      }</font></font></td>
    </tr>
  </table>
  <p ALIGN="JUSTIFY"><font face="宋體">對于不熟悉遞歸的用戶, 
  它看起來似乎是錯誤定義的和危險的循環。有人認為這種程序可能在永不終止的函數調用序列中循環。當然, 
  這是可能的, 但這只是在函數定義不正確時才會發生。</font></p>
  <p ALIGN="JUSTIFY"><font face="宋體">對程序而言, 
  遞歸函數的目的是執行一系列調用, 一直到達某一點, 序列終止。</font></p>
  <p ALIGN="JUSTIFY"><font face="宋體">為了保證遞歸函數是正常執行的, 
  你應該遵守下面的規則: </font></p>
  <p ALIGN="JUSTIFY"><font face="宋體">&nbsp;&nbsp;&nbsp; 1. 
  每次當一個遞歸函數被調用時, 
  程序首先應該檢查其些基本的條件是否滿足了, 
  例如某個參數的值等于零, 如果是這種情形, 函數應停止遞歸。</font></p>
  <p ALIGN="JUSTIFY"><font face="宋體">&nbsp;&nbsp;&nbsp; 2. 
  每次當函數被遞歸調用時, 傳遞給函數一個或多個參數, 
  應該以某種方式變得&quot;更簡單&quot;。即, 
  這些參數應該逐漸靠近上述基本條件。例如, 
  一個正整數在每次遞歸調用時會逐漸變小, 以至最終其值能到達零。</font></p>
  <p ALIGN="JUSTIFY"><font face="宋體">下面, 我們將用一個廣為人知的例子----階乘函數來說明這些規則。</font></p>
  <p ALIGN="JUSTIFY"><font face="宋體">階乘函數是按照遞推關系式來定義的: <br>
  f(0) = 1<br>
  f(n) = n * f(n-1) (n&gt;0)</font></p>
  <p ALIGN="JUSTIFY"><font face="宋體">這個定義很快說明了如何用 C 
  語言來編寫一個能滿足這兩個條件的階乘函數。</font></p>
  <p ALIGN="JUSTIFY"><font color="#000080" face="宋體">int f(int n)<br>
  {<br>
  &nbsp;&nbsp;&nbsp; if (n==0)<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return(1);<br>
  &nbsp;&nbsp;&nbsp; else<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return(n * f(n-1));<br>
  }</font></p>
  <p ALIGN="JUSTIFY"><font face="宋體">注意這個程序是如何遵循上面兩條規則的。</font></p>
  <p ALIGN="JUSTIFY"><font face="宋體">如果基本條件, 即參數等于零滿足的話, 
  遞歸就終止了。<br>
  如果這個條件不滿足, 
  函數每次遞歸傳送一個比上一次更小的參數給被調用函數。最終參數值將為零, 
  正好滿足終止條件。</font></p>
  <p><font face="宋體">讓我們看一下 n=3 時階乘函數執行的情況。</font><font
  FACE="宋體" SIZE="3"></p>
  <p align="center"><!-- Aftershock c431.swf 3=400 4=300 19 40 --> 
  <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
  codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=3,0,0,0" ID="c431"
  WIDTH="400" HEIGHT="300">
    <param name="movie" value="../movie/c431.swf">
    <param name="quality" value="autohigh">
    <param name="menu" value="false">
    <param name="bgcolor" value="#E6E6E6"><embed SRC="../movie/c431.swf" swLiveConnect="FALSE" WIDTH="400" HEIGHT="300"
QUALITY="autohigh" MENU="false" BGCOLOR="#E6E6E6" TYPE="application/x-shockwave-flash"
PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">
  </object>
<!-- EndAftershock c431.swf -->  </p>
  <p align="right"><a href="c43.htm#_top.html#_top">返回頁首</a></p>
</blockquote>

<hr>

<h3><a name="c432"></a><font FACE="宋體" SIZE="3">2.遞歸和迭代</font></h3>

<blockquote>
  <p ALIGN="JUSTIFY">盡管階乘函數是說明遞歸過程的一個很好的例子, 
  但實際上用非遞歸的過程迭代來解決會更好些。迭代只是一個代碼塊的重復執行, 
  而執行的次數則由塊中的局部變量來控制。</p>
  <p ALIGN="JUSTIFY">C語言提供了 for, while, 和 do 
  這些構造來實現迭代循環的結構。當然, 帶標號的 goto 語句也可以用, 
  但實際上通常不怎么用它, 因為它是非結構化的, 
  而且它會使控制流變得難以理解。</p>
  <p ALIGN="JUSTIFY">為了把一個遞歸方法轉換為一個迭代方法, 
  通常要求引入一個或多個的局部變量, 
  用來計數或者控制這個過程。請再來看一看階乘函數的例子:</p>
  <table border="5" width="85%" bgcolor="#CCFFFF" bordercolor="#FF9933" cellspacing="0"
  cellpadding="0">
    <tr>
      <th width="50%">遞歸方法</th>
      <th width="50%">迭代方法</th>
    </tr>
    <tr>
      <td width="50%">f(n) = n * f(n-1) <br>
      f(0) = 1</td>
      <td width="50%">f(n) = n * (n-1) * ... * 1<br>
      f(0) = 1</td>
    </tr>
  </table>
  <p ALIGN="JUSTIFY">遞歸方法:<br>
  int f(int n)<br>
  {<br>
  &nbsp;&nbsp;&nbsp; if (n==0)<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return(1);<br>
  &nbsp;&nbsp;&nbsp; else<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return(n*f(n-1));<br>
  }</p>
  <p ALIGN="JUSTIFY">迭代方法:<br>
  int f_it(int n)<br>
  {<br>
  &nbsp;&nbsp;&nbsp; int count, result;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font
  color="#FF0000"><strong><em>&lt;---引進兩個局部變量 count 和 result</em></strong></font><br>
  &nbsp;&nbsp;&nbsp; for (count=result=1; count&lt;=n; ++count) 
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#FF0000"><strong><em>&lt;---迭代循環</em></strong></font><br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result *= count;<br>
  &nbsp;&nbsp;&nbsp; return(result); 
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#FF0000"><strong><em>&lt;---返回到調用程序</em></strong></font><font
  FACE="宋體" SIZE="3"><br>
  }</p>
  <p ALIGN="JUSTIFY">迭代方法比遞歸方法快, 
  因為迭代避免了一系列函數調用和返回中所涉及到的參數傳遞和返回值的額外開銷。</p>
  <p ALIGN="JUSTIFY">遞歸和迭代之間的選擇。一般情況下, 
  當迭代方法比較容易找到時, 
  你應該避免使用遞歸。這在問題可以按照一個遞推關系式來描述時, 
  是時常遇到的, 比如階乘問題就是這種情況。 反過來, 
  當很難建立一個迭代方法時, 遞歸就是很好的方法。實際上, 
  在某些情形下, 遞歸方法總是顯而易見的, 
  而迭代方法卻相當難找到。當某些問題的底層數據結構本身就是遞歸時, 
  則遞歸也就是最好的方法了。</p>
  <p ALIGN="right"></font><a href="c43.htm#_top.html#_top">返回頁首</a></p>
</blockquote>

<hr>

<h3><a name="c433"></a>3.<font FACE="宋體" SIZE="3">實例</font></h3>

<blockquote>
  <font FACE="宋體" SIZE="3"><p ALIGN="center"></font></font><font FACE="宋體"
  color="#0000FF" size="5">漢諾塔</font><font FACE="宋體" SIZE="3"></p>
  <p ALIGN="JUSTIFY">這是個著名難題, 雖然說起來簡單, 如果不用遞歸, 
  就很難解決。</p>
  <p ALIGN="JUSTIFY">題目介紹: 有三個塔, 每個都堆放 n 個盤子。開始時, 
  所有盤子均在塔A上,并且,盤從上到下, 
  按直徑增大的次序放置。此難題的目的是設計一個盤子移動的序列。使得塔 
  A 上的所有盤子借助于塔 B 移動到塔 C 上。<br>
  有兩個限制: 1. 一次只能搬動一個盤子。2. 
  任何時候不能把盤子放在比它小的盤子的上面。</p>
  <p ALIGN="JUSTIFY">對于缺乏遞歸思維能力的人來說, 
  這個問題會令人迷惑不解。另一方面, 遞歸方法卻是那樣簡單, 
  簡直象有魔力一樣。</p>
  <p ALIGN="JUSTIFY">解題方法如下進行. 若你只有一個盤子, 則是直接從 A 
  移到 C。若你有一個以上的盤子(設為 n 個), 則考慮三個步驟。</p>
  <p ALIGN="JUSTIFY">第一步, 把 n-1 個盤子從塔 A 搬到塔 B。第一步不違反說明的第一條限制(一次只能搬動一個盤子); 
  所有 n-1 個盤子不能作為一個整體一起搬動, 
  而是符合要求地從一個塔移到另一個塔上。注意盡管最終目標是把盤子從 
  A 搬到 C, 但是你可以用相同的算法把盤子從一個塔移到另一個塔上, 
  只要把源塔和目塔的名字改變一下即可。</p>
  <p ALIGN="JUSTIFY">第二步: 將剩下的一只盤 (也就是最大的一只) 直接從 A 
  塔搬到那個仍然空著的塔 C 。</p>
  <p ALIGN="JUSTIFY">第三步: 用第一步所說的方法, 再次將 B 塔上的盤搬到 
  C 塔。和第一步一樣. 
  這一步實際上是由一序列更小的一次僅搬一個盤的操作組成。這一步是沒有問題的, 
  因為 C 塔上僅有的一只盤是最大的盤。</p>
  <p ALIGN="JUSTIFY">這個算法達到了預期的目標, 即在 C 
  塔上按正確的順序堆放了所有的盤。</p>
  <p ALIGN="JUSTIFY">注意: 
  前面的討論是按照遞歸算法的標準形式表達的。顯而易見的情形 (一只盤的情況)能夠直接了當地解決。而其它情況, 
  將用一個&quot;變簡單&quot;的參數(即減少一只盤)去調用函數。最終, 
  將到達僅有一個盤的情形, 這時, 遞歸就終止了。</p>
  <p ALIGN="JUSTIFY">這個例子的 C 語言程序如下。<br>
  main()<br>
  {<br>
  &nbsp;&nbsp;&nbsp; int disks;<br>
  &nbsp;&nbsp;&nbsp; void towers(int,char,char,char);<br>
  &nbsp;&nbsp;&nbsp; printf(&quot;Number of disks: &quot;);<br>
  &nbsp;&nbsp;&nbsp; scanf(&quot;%d&quot;,&amp;disks);<br>
  &nbsp;&nbsp;&nbsp; towers(disks,'A','B','C');<br>
  }</p>
  <p ALIGN="JUSTIFY">void move_disk(char src, char dst)<br>
  {<br>
  &nbsp;&nbsp;&nbsp; printf(&quot;%c ====&gt; %c&quot;,src,dst);<br>
  }</p>
  <p ALIGN="JUSTIFY">void towers(int n, char src, char mid, char dst)<br>
  {<br>
  &nbsp;&nbsp;&nbsp; void move_disk(char,char);<br>
  &nbsp;&nbsp;&nbsp; if (n==1)<br>
  &nbsp;&nbsp;&nbsp; {<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; move_disk(src,dst);<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br>
  &nbsp;&nbsp;&nbsp; }<br>
  &nbsp;&nbsp;&nbsp; towers(n-1,src,dst,mid);<br>
  &nbsp;&nbsp;&nbsp; move_disk(src,dst);<br>
  &nbsp;&nbsp;&nbsp; towers(n-1,mid,src,dst);<br>
  }</p>
  <p ALIGN="JUSTIFY">說明:<br>
  函數 main() 讀入要搬動的盤的個數, 然后開始第一次調用 tower 函數。<br>
  函數 towers() 完成遞歸算法。<br>
  函數 move_disk() 打印盤從一個塔到另一個塔的搬動情形。<br>
  </p>
  <p ALIGN="JUSTIFY">讓我們看一看, 當盤數是 3 時, towers() 的執行情況。</p>
  <p align="center"><!-- Aftershock c432.swf 3=600 4=400 19 40 --> 
  <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
  codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=3,0,0,0" ID="c432"
  WIDTH="600" HEIGHT="400">
    <param name="movie" value="../movie/c432.swf">
    <param name="quality" value="autohigh">
    <param name="menu" value="false">
    <param name="bgcolor" value="#E6E6E6"><embed SRC="../movie/c432.swf" swLiveConnect="FALSE" WIDTH="600" HEIGHT="400"
QUALITY="autohigh" MENU="false" BGCOLOR="#E6E6E6" TYPE="application/x-shockwave-flash"
PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">
  </object>
<!-- EndAftershock c432.swf -->  </p>
  <p align="right"><a href="c43.htm#_top.html#_top">返回頁首</a></p>
</blockquote>
</font>

<p align="center"><a href="http://www.nec.sjtu.edu.cn/support/Course/C/c/c4/c44.htm"><img src="../img/next.gif" width="145" height="30"
alt="next.gif (3633 bytes)" border="0"></a></p>
</body>
</html>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产综合色在线视频区| 欧美视频一二三区| 欧美精品精品一区| 国产女主播一区| 日韩av一区二| 在线视频欧美精品| 国产精品久久午夜| 激情久久久久久久久久久久久久久久| 色综合久久中文综合久久牛| 国产日韩亚洲欧美综合| 日本不卡一区二区| 欧美性色综合网| 国产精品美女久久久久久久久| 久久91精品国产91久久小草| 欧美日韩精品系列| 亚洲乱码国产乱码精品精98午夜 | 欧美午夜精品一区| 国产精品久久毛片a| 激情综合网av| 日韩精品一区二区三区视频| 亚洲bdsm女犯bdsm网站| 色综合久久88色综合天天| 国产人妖乱国产精品人妖| 韩国av一区二区三区在线观看| 日产欧产美韩系列久久99| 欧美午夜片在线看| 亚洲高清在线视频| 欧美天堂亚洲电影院在线播放| 亚洲婷婷综合色高清在线| 亚洲美女屁股眼交| 91麻豆免费观看| 亚洲免费伊人电影| 日本大香伊一区二区三区| 亚洲视频网在线直播| 97se亚洲国产综合自在线观| 自拍偷拍亚洲欧美日韩| 91在线观看高清| 一级中文字幕一区二区| 在线亚洲+欧美+日本专区| 亚洲国产精品久久人人爱| 欧美三级日韩三级国产三级| 婷婷久久综合九色国产成人| 欧美美女一区二区在线观看| 日韩va亚洲va欧美va久久| 日韩一卡二卡三卡四卡| 韩国v欧美v亚洲v日本v| 中文字幕不卡三区| 91在线码无精品| 欧美日韩精品欧美日韩精品一| 日韩精品色哟哟| 久久人人爽爽爽人久久久| 波多野结衣欧美| 亚洲国产欧美日韩另类综合| 91精品国产综合久久福利软件| 看电视剧不卡顿的网站| 国产亲近乱来精品视频| 91浏览器在线视频| 蜜桃视频在线观看一区二区| 国产日韩欧美一区二区三区综合| 91啪亚洲精品| 秋霞国产午夜精品免费视频| 国产精品一卡二卡在线观看| 国产精品久久久久久久蜜臀| 欧美视频一区二| 国产一区激情在线| 亚洲精品国产一区二区精华液| 欧美夫妻性生活| 国产精品12区| 亚洲二区在线视频| 亚洲国产精品二十页| 在线一区二区三区四区五区| 久久99国产精品免费| 亚洲欧美另类久久久精品 | 亚洲蜜臀av乱码久久精品蜜桃| 欧美日韩一二区| 国产乱人伦偷精品视频免下载 | 中文字幕av一区二区三区免费看| 色综合天天综合在线视频| 免费在线观看一区| 亚洲三级久久久| 国产欧美一区二区三区鸳鸯浴| 欧美三级欧美一级| 成人高清视频免费观看| 日本美女一区二区| 欧美久久久久久久久久| 成人avav在线| 狠狠色丁香婷婷综合久久片| 一区二区三区欧美久久| 国产色产综合产在线视频| 欧美日韩dvd在线观看| 99在线精品视频| 韩国欧美国产一区| 日韩不卡在线观看日韩不卡视频| 一区二区三区中文在线| 国产精品无人区| 久久这里只精品最新地址| 欧美电影影音先锋| 亚洲国产精品一区二区www| 一区精品在线播放| 国产调教视频一区| 日韩亚洲电影在线| 6080日韩午夜伦伦午夜伦| 一本色道久久加勒比精品 | 18涩涩午夜精品.www| 国产偷国产偷亚洲高清人白洁| 日韩欧美国产午夜精品| 欧美午夜精品一区| 欧洲人成人精品| 亚洲欧美日韩综合aⅴ视频| 久久久av毛片精品| 欧美大片一区二区三区| 欧美一区日韩一区| 91精品国产全国免费观看| 欧美日本在线看| 欧美亚洲动漫另类| 欧美日韩一区在线| 欧美日韩国产综合一区二区| 欧美私人免费视频| 91精品在线一区二区| 正在播放一区二区| 精品免费日韩av| 国产亚洲福利社区一区| 欧美激情综合五月色丁香| 国产亚洲精久久久久久| 成人18视频日本| 99久久精品国产观看| 91免费视频网址| 欧美在线小视频| 3751色影院一区二区三区| 91精品国产综合久久婷婷香蕉| 制服丝袜激情欧洲亚洲| 精品国产免费一区二区三区香蕉| 精品乱码亚洲一区二区不卡| 久久久精品国产免大香伊| 国产精品久久一级| 亚洲bdsm女犯bdsm网站| 精一区二区三区| 成人开心网精品视频| 在线观看日韩国产| 日韩免费视频一区| 国产精品视频免费| 亚洲中国最大av网站| 蜜臂av日日欢夜夜爽一区| 成人一区在线观看| 欧美日韩在线一区二区| 久久精品一区二区三区av| 亚洲日本一区二区| 日本中文一区二区三区| 国产99久久久久久免费看农村| 色94色欧美sute亚洲13| 欧美mv日韩mv| 亚洲卡通欧美制服中文| 麻豆精品视频在线观看免费| av在线一区二区三区| 91精品国产综合久久久久久久| 国产日韩欧美一区二区三区综合| 亚洲午夜激情av| 国产a精品视频| 91精品国产91综合久久蜜臀| 国产欧美日本一区二区三区| 亚洲午夜三级在线| 国产91精品露脸国语对白| 欧美绝品在线观看成人午夜影视| 精品少妇一区二区三区免费观看| 亚洲欧美日韩国产中文在线| 国模无码大尺度一区二区三区| 欧美综合欧美视频| 国产欧美精品一区二区三区四区| 亚洲国产乱码最新视频| 粉嫩av一区二区三区粉嫩| 欧美一三区三区四区免费在线看| 亚洲精品中文在线| 国产精品一级在线| 国产一区二区三区香蕉| 欧美日韩第一区日日骚| 亚洲欧美激情一区二区| 丁香婷婷综合激情五月色| 欧美一级日韩免费不卡| 亚洲一二三四久久| 亚洲精品视频观看| 成人永久免费视频| 国产婷婷色一区二区三区在线| 日韩av二区在线播放| 欧美丝袜丝交足nylons图片| 亚洲三级久久久| 99久久综合99久久综合网站| 国产午夜精品一区二区三区嫩草| 激情综合网av| 久久综合九色综合久久久精品综合| 亚洲国产精品精华液网站| 色婷婷av一区二区三区gif| 国产精品久久三区| 亚洲国产精品ⅴa在线观看| 久久福利资源站| 日韩欧美国产麻豆| 久久精品99久久久| 日韩精品一区二区三区视频| 青娱乐精品在线视频| 日韩一区二区精品葵司在线| 麻豆精品国产传媒mv男同|