数字R的递归函数和

时间:2017-03-03 21:53:14

标签: r recursion

我尝试编写一个返回数字总和的递归函数。但是,下面的程序似乎没有成功。

getSum = function(i) {
    if (i < 0) {Print("Please enter a positive number")}
    if (i >= 0) {getSum(i - floor(i / 10) - i %% 10) + floor(i / 10) + i %% 10}

它有两个错误:

Error: evaluation nested too deeply: infinite recursion / options(expressions=)?
Error during wrapup: evaluation nested too deeply: infinite recursion / 
options(expressions=)?

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

使用此

if (i >= 0)
{sum(sapply(strsplit(as.character(i),""),as.numeric))}

当然这适用于整数。如果您需要更多,可以添加正则表达式以适应

编辑!哎呀完全错过了你想要一个递归函数

答案 1 :(得分:2)

你想要这样的东西吗?

getSum = function(i){
    i = abs(floor(i))
    if (nchar(i) == 1){
        return(i)
    } else {
        getSum(floor(i/10)) +i%%10 #Minorpt (suggested by @DashingQuark)
    }
}

答案 2 :(得分:1)

在R中,建议使用 // App.test.js import React from 'react'; import ReactDOM from 'react-dom'; import App from './App'; import { render, mount, shallow } from 'enzyme'; it('fails when trying to mount react highcharts', () => { const wrapper = render(<App />); }); 来创建递归函数。

我正在使用@ d.b的功能,但使用Recall

进行演示
Recall