问题描述: 火车从始发站(称为第1站)开出,在始发站上车的人数为a,然后到达第2站,在第2站有人上、下车,但上、下车的人数相同,因此在第2站开出时(即在到达第3站之前)车上的人数保持为a人。从第3站起(包括第3站)上、下车的人数有一定规律:上车的人数都是上两站上车人数之和,而下车人数等于上一站上车人数,一直到终点站的前一站(第n-1站),都满足此规律。现给出的条件是:共有n个车站,始发站上车的人数为a,最后一站下车的人数是m(全部下车)。试问x站开出时车上的人数是多少?
本关任务:使用栈将递归函数转化为非递归函数。
一定要用栈呀,讲思路就行了。有代码的话更好。
按照你的要求编写的求出现最长的数字和位置的C语言程序如下
#include <stdio.h>
int main(){
int a[]={1,1,2,2,2,3,3,3,3,5,5,6,6,6,6};
int length=1,pos,i,j;
for(i=1;i<sizeof(a)/sizeof(a[0]);i++){
if(a[i]==a[i-length]){
length++;
}
}
printf("长度为%d\n",length);
for(i=length-1;i<sizeof(a)/sizeof(a[0]);i++){
if(a[i] == a[i-length+1]){
for(j=i-length+1;j<=i;j++){
if(j==i){
printf("%d ",a[j]);
}else{
printf("%d,",a[j]);
}
}
pos = i-length+1;
printf("位置为%d\n",pos+1);
}
}
return 0;
}