日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

EXCEL单元格公式-实现阿克曼函数计算

發布時間:2023/12/14 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EXCEL单元格公式-实现阿克曼函数计算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一·簡介

二·程序

完整程序

程序解析

三·使用方法


一·簡介

阿克曼函數(ACKERMANN)

阿克曼函數(Ackermann)是非原始遞歸函數的例子。它需要兩個自然數作為輸入值,輸出一個自然數。它的輸出值增長速度非常高,僅是對于(4,3)的輸出已大得不能準確計算。

大致實現:【偽代碼】

func Ackermann(m,n){ if m=0 -> return n+1; else if n=0 -> return Ackermann(m-1,1); else -> return Ackermann(m-1,Ackermann(m,n-1)); }

大概就是這樣的,它的增長速度非常之快,可以用二維表進行解決:

注:豎列為m,橫列為n,第一行為n=0,第一列為m=0

空值為因參數不足而無法計算

Ackermann
1235
23513
347
459
5611
6713
7815
8917
91019
1011
1112
1213
1314
1415
1516
1617
1718
1819
1920
20

二·程序

完整程序

右滑以查看完整程序

=IF(IF(COLUMN()=1,ROW(),IF(ROW()=1,INDIRECT(ADDRESS(2,COLUMN()-1)),INDIRECT(ADDRESS(INDIRECT(ADDRESS(ROW()-1,COLUMN()))+1,COLUMN()-1))))=0,"",IF(COLUMN()=1,ROW(),IF(ROW()=1,INDIRECT(ADDRESS(2,COLUMN()-1)),INDIRECT(ADDRESS(INDIRECT(ADDRESS(ROW()-1,COLUMN()))+1,COLUMN()-1)))))

程序解析

第一個IF表示判斷結果是否為0;若為0(最小為1)則表示無法計算,填充以"",即空單元格(填充別的會造成在二次計算時造成的錯誤)。

這是主體計算:

IF(COLUMN()=1,ROW(),IF(ROW()=1,INDIRECT(ADDRESS(2,COLUMN()-1)),INDIRECT(ADDRESS(INDIRECT(ADDRESS(ROW()-1,COLUMN()))+1,COLUMN()-1))))

第二個IF則為判斷如果列號為1(起始為1),則表示m=0,則結果為行號加1。

這里要解釋一下,因為Excel行列號起始為1,而我們的表格起始為0,就表示所有的行列號都比應該的大1。

剩余部分

IF(ROW()=1,INDIRECT(ADDRESS(2,COLUMN()-1)),INDIRECT(ADDRESS(INDIRECT(ADDRESS(ROW()-1,COLUMN()))+1,COLUMN()-1)))

接下來的判斷則為判斷是否行號為1,如果是則執行:

INDIRECT(ADDRESS(2,COLUMN()-1))

ADDRESS表示行列號對應的坐標。INDIRECT獲取ADDRESS的值。表示為獲取第二行的第(行標-1)列的值。

如果不是則執行:

INDIRECT(ADDRESS(INDIRECT(ADDRESS(ROW()-1,COLUMN()))+1,COLUMN()-1))

表示獲取(第(列標)列的第(行標-1)行的值+1為新的行標,(列標-1)為新的列標)的值。

三·使用方法

復制程序到A1格,下拉單元格復制到A列的你想要的格子;

選中整個A列,右拉復制到你想要的列。

接下來就是Ackermann函數的值的表。

(有可能復制后顯示為空值,那是因為根據現有的數據無法計算,只需要將A列的值多下拉幾行即可)

這是本人的結果:

123513
23513
34729
45961
5611125
6713
7815
8917
91019
101121
111223
121325
131427
141529
151631
161733
171835
181937
192039
202141
212243
222345
232447
242549
252651
262753
272855
282957
293059
303161
313263
323365
333467
343569
353671
363773
373875
383977
394079
404181
414283
424385
434487
444589
454691
464793
474895
484997
495099
5051101
5152103
5253105
5354107
5455109
5556111
5657113
5758115
5859117
5960119
6061121
6162123
6263125
6364127
6465129
6566131
6667133
6768135
6869137
6970139
7071141
7172143
7273145
7374147
7475149
7576151
7677153
7778155
7879157
7980159
8081161
8182
8283
8384
8485
8586
8687
8788
8889
8990
9091
9192
9293
9394
9495
9596
9697
9798
9899
99100
100101
101102
102103
103104
104105
105106
106107
107108
108109
109110
110111
111112
112113
113114
114115
115116
116117
117118
118119
119120
120121
121122
122123
123124
124125
125126
126127
127128
128129
129130
130131
131132
132133
133134
134135
135136
136137
137138
138139
139140
140141
141142
142143
143144
144145
145146
146147
147148
148149
149150
150151
151152
152153
153154
154155
155156
156157
157158
158159
159160
160161
161

總結

以上是生活随笔為你收集整理的EXCEL单元格公式-实现阿克曼函数计算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。