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.
    13 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Asif Ahmed
 el 17 de Ag. de 2020
  
    
    
    
    
    Respondida: youssef
 el 25 de Oct. de 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 comentarios
  James Tursa
      
      
 el 17 de Ag. de 2020
				
      Editada: James Tursa
      
      
 el 17 de Ag. de 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.
Respuesta aceptada
  David Hill
      
      
 el 17 de Ag. de 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 comentarios
  David Hill
      
      
 el 17 de Ag. de 2020
				Using nargin, your function can have 1 or more inputs.
output = digit_sum(12345);
Try the above on my function.
Más respuestas (7)
  Saptarshi Neogi
 el 30 de Ag. de 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 comentarios
  Sanjay Raju
 el 13 de Sept. de 2020
        function x=digit_sum(inp)
    if inp<10
        x=inp;
    else
        x = mod(inp,10) + digit_sum(fix(inp/10));
    end
end
0 comentarios
  Farhath Surayya
 el 19 de Nov. de 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 comentarios
  Ramesh Patel
 el 22 de Jul. de 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 comentarios
  Ans sadiq
 el 19 de Ag. de 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 comentarios
  Selman Baysal
 el 5 de En. de 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 comentarios
  youssef
 el 25 de Oct. de 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 comentarios
Ver también
Categorías
				Más información sobre Data Type Identification en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!









