<samp id="uu9tx"></samp>
        <samp id="uu9tx"><tr id="uu9tx"><nav id="uu9tx"></nav></tr></samp>
        <delect id="uu9tx"><legend id="uu9tx"><meter id="uu9tx"></meter></legend></delect>
                <samp id="uu9tx"><tr id="uu9tx"><meter id="uu9tx"></meter></tr></samp><nav id="uu9tx"></nav>
                <samp id="uu9tx"></samp>
                  <samp id="uu9tx"><tr id="uu9tx"><meter id="uu9tx"></meter></tr></samp>
                  江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
                  南師大老師教你如何做遞歸題目

                  源程序:
                  option base 1
                  private sub command1_click()
                    dim a
                    a=array(1,1,1,1)
                    call sub1(a,4)
                    for i =1 to 4
                        print a(i)
                    next i
                  end sub

                  public sub sub1(x,n)
                    if n>1 then
                       for i=1 to n
                          x(n)=x(n)+1
                          call sub1(x,n-1)
                       next i
                    end if
                  end sub

                  運行結果:
                  1
                  25
                  13
                  5

                  分析:
                  1、程序從按鈕的單擊事件開始運行,先給動態數組a賦初值{1,1,1,1},然后調用子程序sub1來改變數組a的內容,最后輸出改變后的數組值.
                  2、此題重點在于子程序sub1中包含遞歸調用,即自己調用自己,所以在計算時要特別小心,一是要注意n的條件,二是要注意循環次數,三是要注意數組值的變化;其實在計算時可以看出來是有規律的。
                  首先:sub1(x,4) :n=4(n>1),for循環要執行4次,每次執行時x(4)的值加1,所以x(4)最后的值為1+4*1=5,同時要調用sub1(x,3)4次,每次結果一樣,所以只要求出一次的值,再乘4即可。
                  其次:sub1(x,3):n=3(n>1),for循環要執行3次,每次執行時x(3)的值加1,所以對于求一次sub1(x,3)結果為在原結果值上加3,而一共要調用4次,所以最后x(3)的值為1+3*4=13;同時要調用sub1(x,2)3次,每次結果一樣,也只需要求出一次的值便可以求出最后值;
                  最后:sub1(x,2):n=2(n>1),for循環要執行2次,每次執行時x(2)的值加1,所以對于求一次sub1(x,2)結果是在原值上加2,而一共要調用4*3次(想想為什么?),所以x(2)最后的值為1+4*3*2=25;
                  x(1)=1(因為n=1,不滿足條件,所以值保持不變)
                  所以最后結果為{1,25,13,5}

                  亚洲欧美日韩国产一区二区三区_全亚洲免费一级黄片_国产一区二区三区不卡视频手机版_国产污三级网站在线观看