PHP,函式問題

2021-05-04 15:22:17 字數 1237 閱讀 3424

1樓:匿名使用者

函式返回值用return, 不用echo

function total($maxinum_number)return $sum;}

2樓:兄弟連教育北京總校

先說下**為什麼這樣寫

遞迴分為二步:

1.遞推 2.回歸

遞推:遞推為正向的推導,即從前向後的分析問題,尋找遞推的條件。

1-3求和為例

sum(1) = 1 + 0

sum(2) = 2 + 1

sum(3) = 3 + 2 + 1

可發現sum(1) = 1 + 0

sum(2) = 2 + sum(2-1)

sum(3) = 3 + sum(3-1)

這樣一來把求 sum(3) 轉為求sum(2)的把求sum(2)的轉為求sum(1)

回歸自後向前再追逆一遍。論證前期推導的正確性。

經過以上分析所以得函式sum的公式為:

sum(n) = n + sum(n-1)

所以sum(n)的函式原型為:

function sum($n)

但這段**還是有問題,因為還缺少了退出條件。所以寫遞迴的時候注意了。一定要寫乙個 if 語句用來判斷遞迴何時退出。沒有退出條件的遞迴就是死迴圈。

怎麼退出呢?退出條件是什麼?這裡由於是計算1-3之和所以這個函式的成立條件為 00)

return $n + sum($n-1);

return

return $a; //這裡讓它的最後一次迴圈加了0而不是-1,我這裡執行的跟你的不一樣吧。。呵呵。。因為你的if條件是$n > 1 所在 else 裡 $n <= 1 所以你的最後加了1就退出了。。

}最後總結下執行過程

用一行表示下,也許這樣表達你能明白,這段**就相當於如下的公式。

sum(3+sum(2+sum(1)))

如果讓你去執行你會如何呢?

你會先看到外層的sum(3+當看到+號了發現後面還有乙個函式沒有求,哎算了。。。sum(3)現在求不了我把sum(2)求出來再求sum(3)吧,於

是你看sum(2

又是看到+號後面又有了乙個sum函式是求sum(1)的心想這回看你還有沒有了。。嘻嘻。。。好了sum(1)求出來了再把sum(1)的值返回再加上

2 也就是求出了sum(2),sum(2)求出來了再加上3,sum(3)也求出了最後函式執行終止。。。。

講了這麼多。。只是為了你理解的透徹些

php物件物件傳入函式問題,php 物件導向 new乙個物件,一般在函式裡。能不能提出來。

函式在呼叫的時候,引數會被重新開闢記憶體空間的。也就是說 你傳值穿的是 p1,但在函式test執行的時候會另開闢乙個空間,複製一遍 p1,之後再函式中操作的記憶體都是這個函式新開闢的空間。在這個函式test消亡的時候,這個空間被釋放。所以說你這個根本就沒有修改了 p1的值,只是複製了一遍,然後改了,...

PHP程式設計的函式和WHILE用法問題

第一點,if arg1 arg2 return 0 return arg1 arg2 1 1 前一句if arg1 arg2 return 0 意思是如果 arg1 arg2,就return 0 return arg1 arg2 1 1 這一句是乙個三元表示式,意思是如果 arg1 arg2就ret...

php如何呼叫函式,php自定義函式中怎麼呼叫類中方法

直接使用函式名 引數 就行了,引數的個數可以為空,也可以是多個,根據你的具體函式來 php 有系統函式 內建函式 與使用者自定義函式它們的呼叫方法是一樣的 例如 php 系統函式的呼叫 比如 array keys 函式 array keys 函式返回包含陣列中所有鍵名的乙個新陣列。a array a...