r中递归

本文介绍了递归的概念,包括边界条件、递归前进段和递归返回段,并通过求解1到n的自然数和问题,展示了如何在r语言中定义递归函数。示例中,定义了一个名为mysum的函数,用于计算指定数目的自然数之和,通过递归调用来解决该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

递归



1.P120薛书

area <- function(f, a, b, eps = 1.0e-06, lim = 10) {
  fun1 <- function(f, a, b, fa, fb, a0, eps, lim, fun) {
    d=(a+b)/2;fd=f(d);h=(b-a)/4;
    a1=h*(fa+fd);a2=h*(fb+fd);
    if(abs(a0-a1-a2)<eps||lim==0)
      return(a1+a2)
    else{
      return(fun(f,a,d,fa,fd,a0,eps,lim-1,fun)+fun(f,d,b,fd,fb,a0,eps,lim-1,fun))
    }
  }
    fa=f(a);fb=f(b);a0 <- ((fa + fb) * (b - a))/2;
   return(fun1(f, a, b, fa, fb, a0, eps, lim, fun1))
}


f <- function(x) 1/x
quad<-area(f,1,5); quad



#一般来说,递归主要包括边界条件、递归前进段和递归返回段。递归调用时
,若边界条件不满足,递归前进;若边界条件满足时,则递归返回。


我这么说你可能还不太明白,我举个栗子
,比如1,2,3,...,n的自然数求和问题。我以f(n)来表示前n项的和,
容易知道f(n)=n+f(n-1),f(n-1)=n-1+f(n-2),...,f(3)=3+f(2),f(2)=2+f(1),f(1)=1。


于是我们可以定义如下递归函数:


mysum <- function(x){
  
  if(x==1){
    
    res = 1  #设置边界条件
    
  } else {
    
    res <- x + mysum(x-1)  # 递归
    
  }
  
  return(res)  # 返回
  
}
mysum(100)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值