《算法:C语言实现(第 1-4 部分)》中的递归程序 5.4 中,变量 i 的值不能改变,请高手指点。
从《算法:C语言实现(第1-4部分)》中的讲递归部分程序5.4有如下一段代码,问题是:变量i的值一直是5,即使如下面程序中赋值 i=0;结果i的值还是5,。
试过将eval()函数的内容设为空,则i可正常赋值。 所以i的值不变肯定是和递归函数eval()
有关,但实在不明白是什么原因,而且从语法上也讲不通,变量i赋值竟然不起作用,请放高手解答。
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
typedef struct node *link;
struct node {int item; link next;};
char a[]="*+345";
int i;
int main(int argc, char* argv[])
{
int eval();
i=0;
printf("%d\n",eval());
return 0;
}
int eval()
{
int x=0;
while(a[i]==' ') i++;
if(a[i]=='+')
{i++;return eval()+eval();}
if(a[i]=='*')
{i++;return eval()*eval();}
while((a[i]>='0') && (a[i]<='9'))
x=10*x+(a[i++]-'0');
return x;
}