大家好,我是代码小白,用R语言解决下面问题时报错:Error during wrapup: node stack overflow,请问如何解决啊

已知某数列的前二项为2和3,其后各项根据当前最后二项的乘积按以下规则生成:
○1.若乘积为一位数,则该乘积为数列的后继项;
○2.若乘积为二位数,则该乘积的十位数和个位数数字依次作为数列的两个后继项。
本程序在输入数列项数N值以及前两项2和3以后,输出该数列的前N项以及前N项的和。
例如:输入 N=10
输出 2,3,6,1,8,8,6,4,2,4
SUM(10)=44

测试:如果初始的数列前两项值为:3和8,那么数列的前20项分别是什么?其对应的和是多少?
要求:
1. 写一个函数,计算对应的结果!
2. 输入参数是数列的前两项与数列的总项数,可设为a,b,N。本题中a = 3,b =8,N = 20。
3. 输出结果是数列的前20项,以及这前20项的和!

#代码如下#
progression2<-function(a,b,n)
{ x<-array(,n)
x[1]<-a;x[2]<-b
for (cur in 3:n)
{
if(a*b<10)
{
x[cur]=a*b
a<-x[cur]
progression2(a,b,n)
}
else
{
x[cur]=a*b%/%10
x[cur+1]=a*b%%10
a<-x[cur]
b<-x[cur+1]
progression2(a,b,n)
}
return(x)
}
}
progression2(3,8,20)

#报错信息如下#
图片说明

#请问各位大佬,哪里出错了呀,咋改呢?#

https://blog.csdn.net/tiseaya/article/details/84580587

progression2 <- function(a,b,n){
  x <- array(,n)
  x[1] <- a
  x[2] <- b
  cur <- 3
  while (cur <= n){
    if(a*b < 10){
      x[cur] <- a*b
      a <- b
      b <- x[cur]
      cur = cur + 1
    }else{
      if(cur == n){
        x[cur] <- (a*b) %/% 10
      }else{
        x[cur] <- (a*b) %/% 10
        x[cur+1] <- (a*b) %% 10
        a <- x[cur]
        b<- x[cur +1]
        cur = cur + 2
        }
    }
  }
  return(x)
}
progression2(3,8,20)

先上修改了一下的代码//两个问题,取模优先级比较高,然后递归回去从头开始了,所以相当于没有往下走。。然后循环也没用到
所以我是去掉了递归直接用的循环
debug是个好用的方法,推荐