level 6
twototoo222
楼主
谁能告诉我,为什么写g[x] := g[x]个式子,在计算g[x]的时候不会无限循环,而在f[x_] := f[x]中,计算f[x]时就会无限循环呢?
为什么这么写,SetAttributes[k, Flat];k[x_] := x,然后计算k[x]就会无限迭代,
而这么写k[x_] := x;SetAttributes[k, Flat],两个计算下位置,然后再计算k[x]就不迭代了呢?应该是和OneIdentity属性有关,但是和顺序有什么关系?
在Trace[x -> 2, TraceOriginal -> True]的时候,返回结果{x->2,{Rule},{x},{2},x->2,x->2,{Rule},{x},{2},x->2},在已经得到x—>2的返回结果的时候,为什么还要再计算一遍呢?
2013年04月25日 02点04分
1
为什么这么写,SetAttributes[k, Flat];k[x_] := x,然后计算k[x]就会无限迭代,
而这么写k[x_] := x;SetAttributes[k, Flat],两个计算下位置,然后再计算k[x]就不迭代了呢?应该是和OneIdentity属性有关,但是和顺序有什么关系?
在Trace[x -> 2, TraceOriginal -> True]的时候,返回结果{x->2,{Rule},{x},{2},x->2,x->2,{Rule},{x},{2},x->2},在已经得到x—>2的返回结果的时候,为什么还要再计算一遍呢?
