“Look and Say”序列是J.H.Conway发明的一个著名的整数序列
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| function lookandsay($s){ //将保存返回值的变量初始化为空字符串 $r='';
//$m用于保存我们要查找的字符,同时初始化首字符 $m=$s[0];
//用来保存我们找到的$m的数目,初始化为1,如不指定,没法开始统计 $n = 1;
for($i=1,$j=strlen($s);$i<$j;$i++){ //如果这个字符与上一个字符相同 if($s[$i]==$m){ //这个字符的数目加1 $n++; }else{ //否则,把数目和这个字符追加到返回值 $r.=$n.$m; //把要找的设置成当前的字符 $m=$s[$i]; //并把数目重置为1 $n=1; } } //返回构建好的字符吕以及最终的数目和字符 return $r.$n.$m; }
for ($i=0,$s=1;$i<10;$i++){ $s=lookandsay($s); print "$s<br/>\n"; }
|
第一个数字是:1。
看着第一个数字你可以说1个1,那么第二个数字就是:11。
看着第二个数字你可以说2个1,即第三个数字是:21。
看着第三个数字你可以说1个2,1个1,即第四个数字是:1211。
看着第四个数字你可以说1个1,1个2,2个1,即第五个数字是:111221。
根据详细的说明可以参见:http://en.wikipedia.org/wiki/Look-and-say_sequence