Today's Problems - Sum of digits and product of numbers
Given a number, write a program to find the sum of it's digits using recursion
Example
input: 12345
output: 15
input: 91827
output: 27
Given 2 numbers, write a program to find their product using recursion
Example
input: 10,5
output: 50
input: -8,4
output: -32
Hint: Multiplication is repeated addition!
/** * @author MadhavBahl * @date 08/01/2018 */functionsumDigits(num){if(num/10<1)returnnum;elsereturn(num%10)+sumDigits(parseInt(num/10));}letnum1=12345,num2=91827;console.log(`Sum of digits of ${num1} is ${sumDigits(num1)}`);console.log(`Sum of digits of ${num2} is ${sumDigits(num2)}`);/** * @author MadhavBahl * @date 08/01//2018 */importjava.util.Scanner;
publicclassSumDigits {
publicstaticintsum (intnum) {
if (num/10 < 1)
returnnum;
elsereturn (num%10) + sum(num/10);
}
publicstaticvoidmain(String[] args) {
Scannerinput = newScanner (System.in);
System.out.println("/* ===== Sum of digits using recursion ===== */");
System.out.print("\nEnter a number: ");
intnum = input.nextInt();
System.out.println("Sum of digits of " + num + " is: " + sum(num));
}
}""" @author : vishalshirke7 @date : 08/01/2019"""defsum_of_digits(n):
ifn<=0:
returnnelse:
return (n%10) +sum_of_digits(n//10)
print(sum_of_digits(int(input())))
#### [Solution](./Java/Sumrec.java)/**
- @date 08/01/19
- @author SPREEHA DUTTA
/
import java.util.;
public class Sumrec {
public static int sum(int n)
{
if(n==0)
return 0;
else
return n%10+sum(n/10);
}
public static void main(String []args)
{
int n,s;
Scanner sc=new Scanner(System.in);
System.out.println("Enter a number");
n=sc.nextInt();
s=sum(n);
System.out.println(s);
}
}
### C++ Implementation
#### [C++ Solution by @profgrammer](./C++/profgrammer_sumdigits.cpp)
```cpp
/*
*@author: profgrammer
*@date: 08-01-2019
*/
#include <bits/stdc++.h>
using namespace std;
int sum_digits(int n){
if(n < 10) return n;
return n%10 + sum_digits(n/10);
}
int main() {
int n;
cin>>n;
cout<<num_digits(n)<<endl;
}
/** * @author:divyakhetan * @date: 10/1/2019*/
#include<bits/stdc++.h>usingnamespacestd;intsum(int n){
if(n < 10) return n;
elsereturn n % 10 + sum(n /10);
}
intmain(){
int n;
cin >> n;
cout << "The sum of digits is " << sum(n);
return0;
}=begin@author: aaditkamat@date: 08/01/2019=enddefsum_of_digits(num,sum)ifnum < 0return -1 * sum_of_digits(abs(num),sum)endifnum === 0returnsumendsum_of_digits(num / 10,sum + num % 10)enddefmainprint"Enter a number: "num=gets.chomp.to_iputs"Sum of digits of #{num} is: #{sum_of_digits(num,0)}"endmain/* * @author: ashwek * @date: 8/1/2019 */#include<stdio.h>intsum(intnum) {
if( num <= 0 ){
return0;
}
return (num%10) +sum(num/10);
}
voidmain(){
intnum;
printf("Enter a number = ");
scanf("%d", &num);
printf("Sum of digits = %d\n", sum(num));
}/** * @author MadhavBahl * @date 08/01/2018 * METHOD - We keep thte second argument (num2) positive and add the first arguement num2(second arg) times */functionrecursiveProd(num1,num2){// If num 2 becomes 1, return num1if(num2===1)returnnum1;// If any of the numbers is zero, return 0if(num1===0||num2===0)return0;// If both numbers are less than zero negative signs can be removedif(num1<0&&num2<0)returnrecursiveProd(-1*num1,-1*num2);elseif(num2<0)returnrecursiveProd(num2,num1);elsereturnnum1+recursiveProd(num1,num2-1);}letn1=5,n2=10;console.log(`${n1} x ${n2} = ${recursiveProd(n1,n2)}`);letn3=-8,n4=4;console.log(`${n3} x ${n4} = ${recursiveProd(n3,n4)}`);letn5=2,n6=-7;console.log(`${n5} x ${n6} = ${recursiveProd(n5,n6)}`);letn7=-4,n8=-7;console.log(`${n7} x ${n8} = ${recursiveProd(n7,n8)}`);/** * @author MadhavBahl * @date 08/01//2018 */importjava.util.Scanner;
publicclassProduct {
publicstaticintrecursiveProd (intnum1, intnum2) {
if (num2 == 1)
returnnum1;
// If any of the numbers is zero, return 0if (num1 == 0 || num2 == 0)
return0;
// If both numbers are less than zero negative signs can be removedif (num1 < 0 && num2 < 0)
returnrecursiveProd (-1*num1, -1*num2);
elseif (num2 < 0)
returnrecursiveProd (num2, num1);
elsereturnnum1 + recursiveProd(num1, num2-1);
}
publicstaticvoidmain(String[] args) {
Scannerinput = newScanner (System.in);
System.out.println("/* ===== Product of numbers using recursion ===== */");
// Take inputSystem.out.print("\nEnter first number: ");
intnum1 = input.nextInt();
System.out.print("Enter second number: ");
intnum2 = input.nextInt();
// Print the resultSystem.out.println("Product of numbers " + num1 + " and " + num2 + " is: " + recursiveProd(num1, num2));
}
}/** * @date 08/01/19 * @author SPREEHA DUTTA */importjava.util.*;
publicclassRecmultiply {
publicstaticintproduct(intm,intn)
{
if (n==0)
return0;
elsereturnm+product(m,n-1);
}
publicstaticvoidmain(String []args)
{
intm,n,p;
Scannersc=newScanner(System.in);
System.out.println("Enter two numbers ");
m=sc.nextInt();
n=sc.nextInt();
p=product(Math.abs(m),Math.abs(n));
if((m<0&&n>0)||(m>0&&n<0))
p=p*-1;
System.out.println(p);
} }/* *@author: profgrammer *@date: 08-01-2019*/
#include<bits/stdc++.h>usingnamespacestd;intmul(int a, int b){
if(b == 0) return0;
// a*b = (a*b/2) + (a*b/2) + (b%2 == 0)? 0:a;int ans = mul(a, b/2);
ans = ans + ans;
if(b % 2 == 1) ans += a;
return ans;
}
intmain() {
int a,b;
cin>>a>>b;
cout<<mul(a,b)<<endl;
}/** * @author:divyakhetan * @date: 10/1/2019*/
#include<bits/stdc++.h>usingnamespacestd;intsum(int n){
if(n < 10) return n;
elsereturn n % 10 + sum(n /10);
}
intmain(){
int n;
cin >> n;
cout << "The sum of digits is " << sum(n);
return0;
}=begin@author: aaditkamat@date: 08/01/2019=enddefproduct_of_two_numbers(first,second,product)iffirst < 0andsecond < 0returnproduct_of_two_numbers(-first, -second,product)endiffirst == 0orsecond == 0returnproductendiffirst < 0orsecond < 0new_first=[first,second].minnew_second=[first,second].maxreturnproduct_of_two_numbers(new_first,new_second - 1,product + new_first)endproduct_of_two_numbers(first,second - 1,product + first)enddefmainputs"Enter two numbers: "first=gets.chomp.to_isecond=gets.chomp.to_iputs"#{first} * #{second} = #{product_of_two_numbers(first,second,0)}"endmain/* * @author: ashwek * @date: 8/1/2019 */#include<stdio.h>intproduct(inta, intb){
if( a==0||b==0 )
return0;
elseif( a==1 )
returnb;
elseif( b==1 )
returna;
if( a<0&&b<0 )
returnproduct(-a, -b);
elseif( a<0 )
returnproduct(b, a);
elsereturnb+product(a-1, b);
}
voidmain(){
inta, b;
printf("Enter 1st number = ");
scanf("%d", &a);
printf("Enter 2nd number = ");
scanf("%d", &b);
printf("%d x %d = %d\n", a, b, product(a, b));
}
