I want to write a recursive Function that can calculate the sum of all the digit. If the input is 12345 then the answer will be 1+2+3+4+5 , without using string2num and loop.
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Asif Ahmed
am 17 Aug. 2020
Beantwortet: youssef
am 25 Okt. 2023
function output= digit_sum(n)
if n<10
output=fix(n);
end
if n>0
output=output+digit_sum(n*0.1);
end
end
I wrote this code but the problem I am facing is if i set output=0; anywhere then in all the recalling function process my result will turn to be 0, How to Solve this ?

4 Kommentare
James Tursa
am 17 Aug. 2020
Bearbeitet: James Tursa
am 17 Aug. 2020
Maybe you should take a step back and write down the algorithm on paper using words instead of code. Then take a simple 2 digit example and run it through your algorithm on paper. Once you have things figured out for your algorithm, then turn it into code and start testing. That will force you to understand the algorithm first, before you even get to the coding stage.
Akzeptierte Antwort
David Hill
am 17 Aug. 2020
function output= digit_sum(n,a)
if nargin==1
a=0;
end
if n<10
output=a+fix(n);
else
output=digit_sum(floor(n*.1),a+mod(n,10));
end
end
3 Kommentare
David Hill
am 17 Aug. 2020
Using nargin, your function can have 1 or more inputs.
output = digit_sum(12345);
Try the above on my function.
Weitere Antworten (7)
Saptarshi Neogi
am 30 Aug. 2020
You can do this with any inbuit functions.
function x = digit_sum(n)
x=0;
if n>0
x=mod(n,10)+digit_sum(floor(n./10));%recursive
end
0 Kommentare
Sanjay Raju
am 13 Sep. 2020
function x=digit_sum(inp)
if inp<10
x=inp;
else
x = mod(inp,10) + digit_sum(fix(inp/10));
end
end
0 Kommentare
Farhath Surayya
am 19 Nov. 2020
function output= digit_sum(n) if n<10 output=fix(n); end if n>0 output=output+digit_sum(n*0.1); end end
0 Kommentare
Ramesh Patel
am 22 Jul. 2021
function sum = digit_sum(num)
if fix(num)==0
sum=0;
else
x = fix(num/10);
sum = rem(num,10) + digit_sum(x);
end
end
%is this code correct.output is right but i am not able to understand when
%if fix(num)==0 condition will true than value of sum should be zero. but
% zero is not output ,why?
0 Kommentare
Ans sadiq
am 19 Aug. 2021
function out=digit_sum(in)
q=in;
a=q/10;
b=floor(a);
c=q-b*10;
w=c;
if q>0
w=w+digit_sum(b);
end
out=w;
end
0 Kommentare
Selman Baysal
am 5 Jan. 2022
Hi, i have just done this homework. Here is my code:
function output = digit_sum(A)
remA = rem(A,10); % calculates the last digit of A
if isequal(A,0)
output = 0;
else
A = (A-rem(A,10))/10; % gives the new A with substracting the last digit
output = remA + digit_sum(A);
end
end
0 Kommentare
youssef
am 25 Okt. 2023
function x=digit_sum(n)
x=0;
if n<=0
x=0;
else
x=x+mod(n,10)+digit_sum((n-mod(n,10))/10);
end
end
0 Kommentare
Siehe auch
Kategorien
Mehr zu Data Type Identification finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!