recursion in cpp with reference

C++
void sum_digits(int & n, int & sum)
{
  if ( n == 0 ) return;
  sum += n % 10;
  n /= 10;
  sum_digits(n, sum);
}

#include <iostream>
using namespace std;

int main()
{
  int n, sum=0;
  cout << "enter a non-negative number" << endl;
  cin >> n;
  if ( n < 0 ) return -1; // don't trust the user
  sum_digits(n,sum);
  cout << "sum is " << sum << endl;
}#include <iostream>
#include <cstdlib> //had to force it becasue my compiler (Code::Blocks) does not contain system.

using namespace std;
/*int n = 1, sum = 0;

int sumDigits(int n, int sum)
{
    //
	if (n == 0)
    {
        return sum;
    }
    else
    {
        // applying recursion and returning the value into the function
        sum = sum + n%10;
		n= n/10;
        return sumDigits(n, sum);
    }
}

int main(int argc, char* argv[])
{
	n = 1, sum = 0;

        cout << "Enter a non-negative integer: ";
        cin >> n;
        sum = sumDigits (n, sum);
        cout << "The sum of all digits "<< n << " is: " << sum << endl;

	system ("PAUSE");

        return 0;
}
*/

int sumDigits(int &);

int main()
{
	int n;
	sumDigits(n);
}

int sumDigits(int &n)
{
    cout << "Enter a non-negative integer: ";
    cin >> n;
        if (n == 1)
        {
            return 1;
        }
        else
        {
            return (n - 1) + n;
        }
    cout << "The sum of all digits "<< n << " is: " << n << endl;


	system ("PAUSE");

        return 0;
}
Source

Also in C++: