I'm new to recursion and am wondering how the output of the code below is 6. So from what I can understand, there are 2 base/anchor cases which return 0 or 1? Is this correct? And the recursive/inductive case is the f() calling f(), but I'm confused on what it returns. What is the +2 do to what the function returns? Im confused on that part mainly.

#include<iostream>
#include<string>
using namespace std;

int f(char ch1, char ch2)
{
     if(ch1>ch2)
        return 0;
     if(ch1+1==ch2)
        return 1;
     else
        return f(ch1+1,ch2-1) + 2;
}

int main()
{
    cout << f('a', 'e')<< endl;
    
    
    system("pause");
    return 0;
}

Recommended Answers

All 3 Replies

Basically, the function returns the difference between the lower number and the higher number, if and only if the lower number is the first number. The 2 is to account for the fact that both the lower number is being incremented and the higher decremented when they are passed to the recursive call.

Oh, thanks. A light just flipped on for me and I figured it out. that second 'if' statement would never be used in this case.

Should the proper output be 5?

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.