在《PHP算法練習六:判斷一個值是否在數(shù)組中連續(xù)出現(xiàn)三次》中,給大家介紹了怎么判斷一個值在數(shù)組中是不是連續(xù)出現(xiàn)三次,這種思路也是值得大家學習的,感興趣的朋友可以了解一下~
今天本文的主題是如何通過PHP來判斷一組數(shù)據(jù)是不是等比數(shù)列?對于PHP小白來說可能略有難度,但是相信大家閱讀完本文,就對此類問題,了如指掌了。
首先大家要知道什么是等比數(shù)列:
等比數(shù)列是指從第二項起,每一項與它的前一項的比值等于同一個常數(shù)的一種數(shù)列,常用G、P表示。這個常數(shù)叫做等比數(shù)列的公比,公比通常用字母q表示(q≠0),等比數(shù)列a1≠ 0。其中{an}中的每一項均不為0。注:q=1 時,an為常數(shù)列。
比如數(shù)列:2、4、8、16、······
每一項與前一項的比值:4÷2=8÷4=16÷8=2,所以這個數(shù)列是等比數(shù)列,而它的公比就是2。
等比數(shù)列通項公式、求和公式如下:
在簡單了解什么是等比數(shù)列后,我們就要進入主題了。
下面是我給出的實現(xiàn)等比數(shù)列的判斷方法:
<?php function is_geometric($arr) { if (sizeof($arr) <= 1) return True; # 計算比率 $ratio = $arr[1]/$arr[0]; # 檢查剩余的比例 for($i=1; $i<sizeof($arr); $i++) { if (($arr[$i]/($arr[$i-1])) != $ratio) { return "不是等比數(shù)列"; } } return "是等比數(shù)列"; } $my_arr1 = array(2, 6, 18, 54); $my_arr2 = array(10, 5, 2.5, 1.20); print_r(is_geometric($my_arr1)."<br>"); print_r(is_geometric($my_arr2));
判斷結(jié)果是:
是等比數(shù)列 不是等比數(shù)列
上述代碼中,我給了兩個判斷數(shù)組,分別是$my_arr1 = array(2, 6, 18, 54);
和$my_arr2 = array(10, 5, 2.5, 1.20);
。
明顯$my_arr1是等比數(shù)列,其公比是3。而$my_arr2則不是等比數(shù)列。
最后給大家推薦最新最全面的《PHP視頻教程》~快來學習吧!