问答题 试将下列递归过程改写为非递归过程。【北京轻工业学院2000年】void test(int &sum) { int x; scanf(”%d,x); 1t(x=0) sum=0; else{ test(sum); Sum+=X; } printf(“%d”,sum); }
【正确答案】正确答案:算法的基本设计思想:读入X值,判断是否为0,不为0则压入栈中并继续读入X值,为0则停止读入x值并打印输出sum。然后将栈中的元素依次累加,每累加一个元素,输出一个sum值。算法的代码: VOid teSt(){ int X,sum=0,top=0,S[]; SCanf(”%d”,&X); while(X!=0) { S[++top]=x; scanf(”%d”,&x); } printf(”%d”,sum); while(top) { sum+=S[top一一]; printf(”%d”,sum); } }//teSt
【答案解析】